2017-05-11 11 views
1

私の問題は単純だと思われますが、私はそれを解決する方法をまだ見つけていません...apache camelで複数の宛先にメッセージをディスパッチする方法は?

私はそれを取り替える新しいシステムと動作しているレガシーシステムを持っています。これは残りのwebservicesコールなので、httpサービスで単純なブリッジエンドポイントを使用しています。

イコール機能の実行を確実にするために、両方のシステムにメッセージを送信するキャラクトルートの後ろに置いて、レガシーの応答のみを返し、両方のシステムの応答をログに記録して、道...

私はこのルートを作成します。

from("servlet:proxy?matchOnUriPrefix=true") 
     .streamCaching() 
     .setHeader("CamelHttpMethod", header("CamelHttpMethod")) 
     .to("log:com.mylog?showAll=true&multiline=true&showStreams=true") 
     .multicast() 
     .to(urlServer1 + "?bridgeEndpoint=true") 
     .to(urlServer2 + "?bridgeEndpoint=true") 
     .to("log:com.mylog?showAll=true&multiline=true&showStreams=true") 
    ; 

これは、各サービスを呼び出すようにしてメッセージを記録するために動作しますが、応答は混乱している...

最初のサーバが「doesnの場合応答しないでください。秒がコールされていない場合、秒dはエラーに応答し、そのエラーだけがクライアントに返信されます...

すべてのアイデア?

答えて

3
あなたは、マルチキャストのドキュメントにいくつかの詳細は、マルチキャスト(あなたのケース)の http://camel.apache.org/multicast.html

デフォルトの動作を確認することができます

は次のとおりです。ルートが1 ずつ呼ばれているよう

  • parallelProcessingが偽

    ケースを正しく実装するには、おそらく必要があります:

    • ので、例外が
    • のconfigureを正しい処理を停止したり、単一のマルチキャスト結果に
    をすべてのコールからの結果を組み合わせることができますので、いくつかのアグリゲータ戦略を実施し、strategyRefにそれを入れていないだろう、各外部サービス呼び出しのエラー処理を追加します
関連する問題