質問

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

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

注:ラクダ2.3.0瓶を使用しています。

    <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>
役に立ちましたか?

解決

これは私の誤解でした。それは確かに同期して動作していました。私はもともと、ログ内に奇妙なメッセージの流れを引き起こしていた間違った場所にDocatchタグを配置していました(そもそもこの質問を投稿しました)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top