这个问题与以下内容完全相同:
我正在使用消息驱动的通道适配器(Spring Integration)从IBM Mq消费消息 . 消息中的JMS Destination属性为null . 有人可以告诉我如何在标头中获取使用wmq消耗的消息的队列名称 .JMS Destination属性用于从apache Active mq消耗的消息,但不用于IBM MQ .
DefaultJmsHeaderMapper 的代码如下:
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 Headers .
JmsHeaders.DESTINATION
我建议您调查消费后获得的所有 Headers ,并查看您可能拥有所需目的地的 Headers .
否则,您始终可以扩展 DefaultJmsHeaderMapper 并在重写的 toHeaders() 方法中实现您自己的逻辑 .
toHeaders()
1 回答
DefaultJmsHeaderMapper
的代码如下:因此,如果IBM Mq在此问题上没有
JmsHeaders.DESTINATION
Headers .我建议您调查消费后获得的所有 Headers ,并查看您可能拥有所需目的地的 Headers .
否则,您始终可以扩展
DefaultJmsHeaderMapper
并在重写的toHeaders()
方法中实现您自己的逻辑 .