使用producerTemplate时获取JMSMessageID



在Camel中,

ProducerTemplate producerTemplate = exchange.getContext().createProducerTemplate();
producerTemplate.sendBody("endpointqueue?includeSentJMSMessageID=true", ExchangePattern.InOnly, body);

我需要获取从IBMMQ/ActiveMQ返回的JMSMessageID。我正在调试模式下查看交换值,但找不到。我只能找到sessionID。它存放在哪里,如何获取?

Camel的文件中写道:

includeSentJMSMessageID-仅适用于使用InOnly发送到jms目的地的情况。启用此选项将使用JMS客户端在将消息发送到JMS目的地时使用的实际JMSMessageID来丰富Camel Exchange。

includeSentJMSMessageID与我的需求不同吗?还是我遗漏了什么?

文档表示JMS MessageID可用作头。所以你应该可以这样退货:

from("direct:queueMessage")
.to("jms://myqueue?includeSentJMSMessageID=true")
.setBody().simple("${header.JMSMessageID}");

然后使用发送您的信息

String msgId = producerTemplate.requestBody("direct:queueMessage", body, String.class);

最新更新