0

jms メッセージをトピックに送信する Apache Camel ルートを作成しようとしています。一定時間内に応答を受信しない場合は、Spring DSL を使用してルートを開始します。

私が抱えている問題は、foTopic 呼び出しが非同期であるように見えることです。メッセージをブロックして待機するか、タイムアウトになるまで待機することを期待していますが、メッセージをトピックに送信し、次のプロセッサに実行されます。タイムアウトが発生すると、プロセッサが再度呼び出されます。jms コンポーネントについての私の期待は間違っていますか、それとも何かが正しく構成されていませんか?

注: camel 2.3.0 jar を使用しています。

    <endpoint id="foTopic"
          uri="jms:topic:${jms.fotopic.topicName}?pubSubNoLocal=true&amp;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>
4

1 に答える 1

0

これは私の設定ミスでした。それは確かに同期的に動作していました。私はもともと doCatch タグを間違った場所に配置していたため、ログに奇妙なメッセージ フローが発生していました (最初にこの質問を投稿した理由)。

于 2010-09-16T17:45:16.127 に答える