3

メッセージのヘッダープロパティに基づいて、選択ノードを使用してラバでメッセージをルーティングする方法は?

私のメッセージには、prop1とprop2の2つのヘッダーがあります。

この式を使用してルーティングしようとすると、次のようになります。

    <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']">

これはヌルセーフであることに注意してください。つまりprop1prop2そこにある必要はありません。

于 2012-10-09T22:17:54.557 に答える
2

ヘッダー エバリュエーターは、複雑な式を処理するように設計されていません (つまり、論理演算子をサポートしていません)。

シンタックスから、バージョン < 3.3.0 のミュールを使用していると思われるため、 MELに基づく例はおそらくニーズに合わないでしょうが、アップグレードしたらすぐにこのアプローチを取る必要があります。

古いミュール バージョンでは、最適なアプローチは groovy 式エバリュエーターを使用することであり、when 条件は次のようになります。

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