你能在Mule ESB中写一个“if”语句吗?

时间:2013-03-07 16:54:52

标签: java mule esb

我有一个我构建的抽象消息处理器,我希望将其封装在一个布尔值评估中,以便我可以在某些条件下将其关闭。我想写这样的东西:

<flow name="myFlow">
    <if expression="${myFlag} == true">
        <mynamespace:myCustomMessageProcessor .../>
    </if>
</flow>

这在Mule ESB中是否可行?我可以查看一个例子吗?

4 个答案:

答案 0 :(得分:2)

这是所有 ESB 产品中存在的基于内容的标准路由模式。

Mule 中,您希望使用选择路由器 - 请参阅例如Mule School: Using Flow Controls – Choice Router教程。

答案 1 :(得分:1)

如果要使用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>

让我知道它是否有效......

答案 2 :(得分:0)

Mule Choice Router是使用if else或if elseif实现的apt选项。即使您使用表达式来实现同样的目标。

答案 3 :(得分:0)

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>