1

アクティブMQ 5.5.1

<c:route>
    <c:from uri="jetty:http://0.0.0.0:8055/ws/despacho" />
    <c:to uri="bean:despachoHandler" />
    <c:to uri="activemq:queue:copom.out.test" pattern="InOut" />
</c:route>

メッセージはキューに入っているように見えますが、消費できません。しばらくするとタイムアウトになり、メッセージは ActiveMQ.DLQ に送られます。

org.apache.camel.ExchangeTimedOutException: OUT メッセージは次の時間内に受信されませんでした: 20000 ミリ秒以内に応答メッセージが返されます。

pattern="InOnly"に変更すると、メッセージを正常に消費できます。

どうしたの?

4

2 に答える 2

12

EIP パターンを学習する必要があります。

InOut を使用する場合、要求と応答の EIP パターンを実行しています http://camel.apache.org/request-reply.html

この場合、メッセージは JMS キューに送信され、InOut と同様に、応答メッセージは JMSReply プロパティで定義されたキューに送り返されることが期待されます (Camel は一時的なキュー名に設定します)。それ以外の場合は明示的に設定されます)。

20 秒後に返信メッセージが返ってこない場合、Camel はタイムアウト例外で失敗します。タイムアウトの長さを構成できます。

したがって、リクエスト応答 EIP (InOut) またはイベント メッセージ (InOnly) を行うかどうかを決定する必要があります http://camel.apache.org/event-message.html

于 2013-01-25T18:00:00.817 に答える