【问题标题】:ActiveMQ - I can't consume a message sent from Camel using InOut patternActiveMQ - 我无法使用 InOut 模式使用从 Camel 发送的消息
【发布时间】:2013-01-09 17:37:31
【问题描述】:

ActiveMQ 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 毫秒到期回复消息,相关 ID: Camel-ID-SSP-SGPF-GITSAD-58215-1359134232568-0-3 未收到。

如果我将其更改为 pattern="InOnly",我可以正常使用该消息。

发生了什么事?

【问题讨论】:

    标签: jms activemq apache-camel


    【解决方案1】:

    你应该学习 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

    【讨论】:

      【解决方案2】:

      当我们的系统设置了 JMSCorrelationID= 并且 Camel 输入/输出无法接收来自请求回复队列的响应时,我们遇到了类似的问题。 删除我们的代码设置的 JMSCorrelationID= 后,Camel 开始运行,成功接收来自请求回复队列的消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-29
        • 2013-12-25
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 2012-07-11
        相关资源
        最近更新 更多