質問
JMSメッセージをトピックに送信するApache Camelルートを作成しようとしています。一定の時間以内に返信を受け取らない場合は、Spring DSLを使用してルートを開始します。
私が抱えている問題は、Fotopic Callが非同期であるように見えるということです。メッセージをブロックして待つか、タイムアウトに到達するまで待機することを期待していますが、メッセージをトピックに送信し、次のプロセッサに実行します。タイムアウトが発生すると、プロセッサを再度呼び出します。 JMSコンポーネントについての私の期待は間違っていますか、それとも何かが誤って構成されているのですか?
注:ラクダ2.3.0瓶を使用しています。
<endpoint id="foTopic"
uri="jms:topic:${jms.fotopic.topicName}?pubSubNoLocal=true&requestTimeout=5000"/>
<route id="foMasterRegistration" startupOrder="10">
<!-- Fire this route once on startup. -->
<from uri="timer:foStartTimer?period=0"/>
<to uri="foPreProcessor"/>
<doTry>
<setExchangePattern pattern="InOut"/>
<to uri="foTopic"/>
<to uri="foProcessor"/>
<doCatch>
<exception>java.util.concurrent.TimeoutException</exception>
<exception>org.apache.camel.ExchangeTimedOutException</exception>
<to uri="foProcessor"/>
</doCatch>
</doTry>
</route>
解決
これは私の誤解でした。それは確かに同期して動作していました。私はもともと、ログ内に奇妙なメッセージの流れを引き起こしていた間違った場所にDocatchタグを配置していました(そもそもこの質問を投稿しました)。
所属していません StackOverflow