Apache camel 在Apache驼峰路由中处理传入的JMSCOrrationId

Apache camel 在Apache驼峰路由中处理传入的JMSCOrrationId,apache-camel,Apache Camel,我在JMS(activemq)队列上有一个骆驼路由,目标是以请求/应答方式调用。在这个路由中,我分割消息并调用另一个activemq队列(也是以请求/应答的方式) 这是一条显示情况的最短路线 <route> <from uri="activemq:A" /> <split> <xpath>/root/subpart</xpath> <inOut uri="activemq:B" />

我在JMS(activemq)队列上有一个骆驼路由,目标是以请求/应答方式调用。在这个路由中,我分割消息并调用另一个activemq队列(也是以请求/应答的方式)

这是一条显示情况的最短路线

<route>
   <from uri="activemq:A" />
   <split>
      <xpath>/root/subpart</xpath>
      <inOut uri="activemq:B" />
   </split>
</route>

/根/子部分
问题是Camel没有设置新的JMSCorrelationId(因为传入消息中已经有一个JMSCorrelationId)。如果什么也不做,您会得到带有未知correlationId的响应,并且交换永远不会结束

我没有详细介绍,但我猜测,孔拆分器使用的是相同的临时队列,但它(逻辑上)对每个消息都期望不同的关联id。所有使用相同的方法,它收到第一个,不知道如何处理其他

处理这种情况的最佳解决方案是什么


我发现一个有效的方法是将传入的JMSCorrelationId保存在另一个头中(我不确定是否需要),然后删除它。这并不像我想要的那么干净,但我想不出别的东西。有什么想法吗?

基本上,您的案例在本文中进行了描述。似乎在2.11中增加了一个功能,您可以要求Camel创建一个新的corr-id

因此,在此期间,为什么不继续您的工作呢?在将JMSCorrelationId头
发送到“activemq:B”之前删除它?我想这是目前最好的解决办法

当然,您也可以在第二个端点上使用“useMessageIDAsCorrelationID”选项