java - 使用 spring 集成从 wmq 获取 JMS 目标

标签 java spring-integration ibm-mq

我正在使用消息驱动 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/

相关文章:

ibm-mq - 使用 Java 一次性浏览来自 WebSphere MQ 的所有消息

java - 如何将整数转换为二进制表示形式,并根据需要附加一定数量的位

java - 从 Java 进程执行时跳过批处理文件中的暂停命令

spring-integration - 一个电子邮件入站适配器适用于多个电子邮件地址

java - 如何等待多线程发布订阅 channel 完成

ibm-mq - AMQ9504 : A protocol error was detected for channel

java - 为什么 JavaFX 的 WebView 闪烁红色和绿色?

java - 有没有办法在不绘制多余形状的情况下调整 JFrame 的大小?

java - Spring Batch条件流不执行else部分

oracle - WebSphere MQ/MQSeries - 是否可以通过一次调用将消息发送到多个队列?