我正在使用消息驱动 channel 适配器(Spring Integration)使用来自 IBM Mq 的消息。消息中的 JMS Destination 属性为空。有人可以告诉我如何在使用 wmq 消费的消息的 header 中获取队列名称。
JMS Destination 属性适用于从 apache Active mq 使用的消息,但不适用于 IBM MQ。
最佳答案
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
header 。
我建议您调查消费后获得的所有 header ,看看哪些 header 可能是您所需的目的地。
否则,您始终可以扩展 DefaultJmsHeaderMapper
并在重写的 toHeaders()
方法中实现您自己的逻辑。
关于java - 使用 spring 集成从 wmq 获取 JMS 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50415691/