我有一个我构建的抽象消息处理器,我想将其封装在布尔评估中,以便在某些条件下将其关闭。我正在寻找这样的东西:
<flow name="myFlow">
<if expression="${myFlag} == true">
<mynamespace:myCustomMessageProcessor .../>
</if>
</flow>
这在 Mule ESB 中可行吗?有我可以回顾的例子吗?
这是一种标准的基于内容的路由模式,存在于所有ESB产品中。
在Mule中,您想使用选择路由器- 参见例如Mule School:使用流控制 - 选择路由器教程。
如果要使用 IF 条件从属性文件中读取值,可以执行以下操作:-
<scripting:component doc:name="Groovy" doc:description="This component is used to check the value from properties file" >
<scripting:script engine="Groovy">
// use your if else code here like
if(${myFlag} == true)
{
return message.payload
}
</scripting:script>
</scripting:component>
让我知道它是否有效....
Mule Choice Router 是使用 if else 或 if elseif 实现的最佳选择。即使您使用表达式来实现相同的目的。
Mule 允许使用<choice>
路由器进行条件检查。您可以为后备决策定义不同<when>
的一个<othterwise>
条件。
<choice doc:name="Choice condition">
<when expression="#[flowVars.myVar = 'on']">
<logger level="INFO" message="Case: myVar is on" />
</when>
<when expression="#[flowVars.myVar = 'off']">
<logger level="INFO" message="Case: myVar is off" />
</when>
<otherwise>
<logger level="INFO" message="Case: otherwise the default route is used" />
</otherwise>
</choice>