jms メッセージをトピックに送信する Apache Camel ルートを作成しようとしています。一定時間内に応答を受信しない場合は、Spring DSL を使用してルートを開始します。
私が抱えている問題は、foTopic 呼び出しが非同期であるように見えることです。メッセージをブロックして待機するか、タイムアウトになるまで待機することを期待していますが、メッセージをトピックに送信し、次のプロセッサに実行されます。タイムアウトが発生すると、プロセッサが再度呼び出されます。jms コンポーネントについての私の期待は間違っていますか、それとも何かが正しく構成されていませんか?
注: camel 2.3.0 jar を使用しています。
<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>