2012-10-09 38 views
3

如何根據消息中的頭部屬性使用選擇節點在mule中路由消息?基於Header屬性的Mule選擇節點表達式

我的信息有兩個標題:prop1和prop2。

,當我嘗試使用路線這個表達式:

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

它的工作原理。

但當我嘗試這個辦法:

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

這是行不通的。我的意思是,即使我在消息中正確設置標題屬性,它也會轉到「其他」流程。

任何想法將不勝感激!

謝謝!

回答

4

假設騾子3.3.x和這兩個屬性是字符串:

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

注意這是空安全,即prop1prop2在那裏不是必需的。

+0

你知道這是騾子3.2.x中兼容?我正在運行3.2.1 – ridermule

+1

不,不會在3.2.x上運行。在3.2.x上使用@genjosanzo的Groovy解決方案或升級到3.3.x,並使用我建議的MEL表達式,這是Mule中的新統一表達式語言。 –

+0

請參閱:https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-expression-language-reference#literals – Klapsa2503

2

頁眉評估不是專門用來對付複雜的表達式(即它不支持邏輯運算符)

從你sintax我假設你是基於MEL韓元用騾子與版本< 3.3.0這樣的例子儘管你應該在升級後儘快採取這種方法,但這可能會滿足你的需求。

在老騾子版本,最好的辦法可能是使用常規表達式求值和條件時,會像下面

<when expression="#[groovy:message.getInboundProperty('prop1') == 'abc' && message.getInboundProperty('prop2') == '123']"> 
相關問題