Mule选择路由取决于消息的有效负载

时间:2012-08-15 20:33:10

标签: mule

我是MULE的新手。我正在尝试创建一个mule流来路由到不同的端点,具体取决于XML有效负载的内容。例如,如果有效负载的根元素是Aa,我想将消息路由到队列A.否则,它应该转到队列B.任何人都可以给我一些关于如何实现这一点的指示吗?

所以,到目前为止,我试过这个:

<choice doc:name="Choice">
        <when expression="message.getpayload contains 'Aa'" evaluator="string">
            <processor-chain>
                <jms:outbound-endpoint queue="A" connector-ref="Active_MQ" doc:name="JMS"/>
            </processor-chain>
        </when>
        <otherwise>
            <processor-chain>
                <jms:outbound-endpoint queue="B" connector-ref="Active_MQ" doc:name="JMS"/>
            </processor-chain>
        </otherwise>
    </choice>

但是一切都要进入队列A,所以我的选择表达不起作用。任何帮助将不胜感激。

感谢!!!

1 个答案:

答案 0 :(得分:3)

使用XML数据时最好使用XPath来评估这种情况。

<choice doc:name="Choice">
    <when expression="/Aa" evaluator="xpath">
        <processor-chain>
            <jms:outbound-endpoint queue="A" connector-ref="Active_MQ" doc:name="JMS"/>
        </processor-chain>
    </when>
    <otherwise>
        <processor-chain>
            <jms:outbound-endpoint queue="B" connector-ref="Active_MQ" doc:name="JMS"/>
        </processor-chain>
    </otherwise>
</choice>

HTH