0

JMS (activemq) キューで消費するキャメル ルートがあり、リクエスト/リプライ方式で呼び出されるようになっています。このルート内でメッセージを分割し、別の activemq キューを呼び出します (これも要求/応答方式で)。

状況を示す最小限のルートを次に示します

<route>
   <from uri="activemq:A" />
   <split>
      <xpath>/root/subpart</xpath>
      <inOut uri="activemq:B" />
   </split>
</route>

問題は、Camel が新しい JMSCorrelationId を設定しないことです (着信メッセージから既に 1 つあるため)。何もしないと、correlationId が不明な応答が返され、交換が終了しません。

詳細には触れませんでしたが、同じ temporaryQueue がホール スプリッターに使用されているが、(論理的に) メッセージごとに異なる相関 ID が必要であると推測されます。すべて同じものを使用して、最初のものを受信し、他のものをどうするかを知りません。

状況を処理するための最良の解決策は何ですか?

私が見つけたのは、着信 JMSCorrelationId を別のヘッダーに保存し (必要があるかどうかはわかりません)、それを削除することです。これは私が望んでいたほどきれいではありませんが、他に何か思いつきませんでした。何か案は ?

4

1 に答える 1

1

基本的に、あなたのケースはこのJira issue で説明されています。2.11 には、Camel に新しい corr-id の作成を依頼できる機能が追加されるようです。

<removeHeader headerName="JMSCorrelationId" /> それまでの間、「activemq:B」に送信する前にJMSCorrelationId ヘッダーを削除するという作業を続行してみませんか? それが今のところ最善の解決策だと思います。

もちろん、2 番目のエンドポイントでも「useMessageIDAsCorrelationID」オプションを使用できます。

于 2012-11-06T07:05:04.743 に答える