2016-11-02 7 views
0

Usecase:httpエンドポイントからメッセージを取り出し、それらをjmsエンドポイントにルーティングしたいとします。Camelのjmsリスナーが正しいメッセージを受け取っていない

マイルート設定は以下のようになります。

from("jetty:http://0.0.0.0:9080/quote") 
      .convertBodyTo(String.class) 
      .to("stream:out") 
      .to(InOut, "wmq:queue:" + requestQueue + 
        "?replyTo=" + responseQueue + 
        "&replyToType=" + replyToType + 
        "&useMessageIDAsCorrelationID=true"); 

私の理解では、その私がJMSエンドポイントの要求 - 応答パターンを取得し、CorrelationIDが対応する要求に対する応答を行うために、一意の識別子となり、このよう。 これは、アプリケーションが1つしか実行されていないのに、複数のインスタンスが同時に実行されているときにうまく動作し、プロデューサだけでなく、ランダムに応答が取得されます。

たとえば、AとBは、共有キューの応答を受信するまったく同じ構成のルート(およびリスナー)の2つのインスタンスです。時々、Aは応答を得ますが、Bによって生成されたメッセージの応答も収集します。

これに関するヘルプ/参考情報をお待ちしています。ありがとう!

+0

での「JMSオーバー要求 - 応答」であなたはもう一方の端のアプリケーションを確認することができます定義されていますか? –

答えて

0

replyToTypeの問題は、基本的にExclusiveに設定されていました。リスナーは、相関IDを一致させるためにjmsセレクタを使用する代わりにすべてを取得していました。

replyToTypeの値をSharedに変更し、すべて正常に機能しています。

これはよく適切に設定異なるcorrelationIDがさんとの回答を返信さhttp://camel.apache.org/jms.html

+0

そうだろう=) –

関連する問題