3

X が false の場合は A にルーティングしたい、X が true の場合は A と B にルーティングしたい

みたいなの書いてみた

from(?)
.choice()
   .when( X )
      .multicast().to(A,B).end()
   .otherwise() // I get a (compile) error underlined here saying 'otherwise() is not on type ProcessorDefinition
      .to( A )

私はこれがこれを表現する最良の方法ではないと思う

基本的には常に(A)にルーティングしたいし、その条件があれば(B)にもルーティングしたい

これをCamelで表現する最良の方法は何ですか?

4

4 に答える 4

6

endChoice()の最後に使用すると機能します...when()

http://camel.apache.org/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.htmlを参照してください

于 2013-06-14T15:47:54.290 に答える
1

選択については、この FAQ を参照してください: https://camel.apache.org/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.html

動的受信者リストを使用して、ルーティング先のエンドポイントを計算することもできます。その後、条件に応じて 1 または 2 を返すことができます: http://camel.apache.org/recipient-list.html

于 2013-06-14T15:48:01.537 に答える
0

メッセージを常にルート A に送りたい場合は、choice 句に含めないでください。

from(?)
.to( A )
.choice()
   .when( X )
      to(B).end()

上記のようなもので十分です。また、Claus が回答で示した記事も読んでください。

コンパイル エラーについては、when 句の後の end() を削除してください。end() により、choice() 句が終了しますが、choice が既に閉じられている間に、otherwise() 句を使用します。

于 2013-06-17T06:54:40.520 に答える