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毫米到期回复消息与correlationID: 未收到Camel-ID-SSP-SGPF-GITSAD-58215-1359134232568-0-3。
如果我将其更改为 pattern =“InOnly”我可以正常使用该消息。
发生了什么事?
答案 0 :(得分:10)
你应该学习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
答案 1 :(得分:0)
当我们的系统设置为JMSCorrelationID =且Camel in / out无法接收到来自Request Reply队列的响应时,我们遇到了类似的问题。 删除由我们的代码设置的JMSCorrelationID =时,Camel开始成功运行,成功接收到来自Request Reply队列的消息。