我使用消息驱动的通道适配器(Spring Integration)消耗来自IBM Mq的消息。消息中的JMS Destination属性为null。有人可以告诉我如何在标题中获取使用wmq消耗的消息的队列名称 JMS Destination属性用于从apache Active mq消耗的消息,但不用于IBM MQ。
答案 0 :(得分:0)
DefaultJmsHeaderMapper
的代码如下:
try {
Destination destination = jmsMessage.getJMSDestination();
if (destination != null) {
headers.put(JmsHeaders.DESTINATION, destination);
}
}
catch (Exception ex) {
this.logger.info("failed to read JMSDestination property, skipping", ex);
}
因此,如果IBM Mq没有提供该属性值,我们真的不会在此问题上有JmsHeaders.DESTINATION
标题。
我建议你调查消费后得到的所有标题,看看你的目的地是什么。
否则,您始终可以扩展DefaultJmsHeaderMapper
并在重写的toHeaders()
方法中实现您自己的逻辑。