3

如何根据消息中的标头属性使用选择节点在 mule 中路由消息?

我的消息有两个标题:prop1 和 prop2。

当我尝试使用此表达式进行路由时:

    <when expression="INBOUND:prop1=abc evaluator="header">

有用。

但是当我尝试这个时:

    <when expression="INBOUND:prop1=abc and prop2=123" evaluator="headers">

这没用。我的意思是,即使我在消息中正确设置了标题属性,它也会进入“否则”流程。

任何想法将不胜感激!

谢谢你!

4

2 回答 2

4

假设 Mule 3.3.x 和两个属性都是字符串:

<when expression="#[message.inboundProperties.?prop1 == 'abc' and message.inboundProperties.?prop2 == '123']">

请注意,这是空值安全的,即prop1不需要prop2在那里。

于 2012-10-09T22:17:54.557 回答
2

标头求值器不是为处理复杂表达式而设计的(即它不支持逻辑运算符)

根据您的 sintax,我假设您正在使用版本 < 3.3.0 的 mule,因此基于MEL的示例可能无法满足您的需求,尽管您应该在升级后立即采用这种方法。

在较旧的 mule 版本中,最好的方法可能是使用 groovy 表达式评估器,并且 when 条件如下所示

<when expression="#[groovy:message.getInboundProperty('prop1') == 'abc' && message.getInboundProperty('prop2') == '123']">
于 2012-10-09T22:22:10.353 回答