【问题标题】:Get JMS Destination From wmq using spring integration [duplicate]使用spring集成从wmq获取JMS目的地[重复]
【发布时间】:2018-10-29 03:40:32
【问题描述】:

我正在使用消息驱动通道适配器 (Spring Integration) 使用来自 IBM Mq 的消息。消息中的 JMS Destination 属性为空。有人可以告诉我如何在标题中获取使用 wmq 消耗的消息的队列名称。
JMS Destination 属性将用于从 apache Active mq 使用的消息,但不适用于 IBM MQ。

【问题讨论】:

  • @JoshMc 解决方案在那边也没有。
  • 第一个问题你没有得到你喜欢的答案这一事实并不意味着你应该问同样的重复问题。如果您认为不清楚,您应该编辑您之前的问题。
  • 是的。同意...!!

标签: java spring-integration ibm-mq


【解决方案1】:

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() 方法中实现自己的逻辑。

【讨论】:

  • 我已经尝试过 jmsMessage.getJMSDestination() ,它也返回 null 。我检查了所有没有队列信息的标题。
  • 对。这就是我要解释的为什么你没有在JmsHeaders.DESTINATION 中获得价值,我建议你走的路。请问我错过了什么?
  • 感谢您的回复。扩展 DefaultJmsHeaderMapper 可以解决我的问题吗?我可以在重写的 toHeaders() 方法中获取我的队列名称吗?
  • 您不知道上下文是从哪个队列读取的吗?您必须指定队列名称才能打开它并阅读消息。
  • 我会消耗很多队列并传递到公共频道。我不会知道我频道中的队列名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-23
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
相关资源
最近更新 更多