java - 如何在没有 Jms session 对象的情况下复制 javax.jms.TextMessage

标签 java jms ibm-mq spring-jms jms-session

我正在使用 Spring JMS @JmsListener 注释收听 MQ Q。

    @JmsListener(destination = "${qNmae}", 
                    containerFactory = "jmsListenerContainerFactory2")
    public void processMessage(Message<String> msg) throws JMSException {

    }

我需要将 Spring Message 对象转换为 New JMS TextMessage。我知道我可以放置 TextMessage 类型的方法参数而不是 Message 并且 Spring 会自动转换它但随后我得到不可变对象(immutable对象)但我的代码要求我保留现有 header 并在某些情况下添加新 header 。 基本上我正在寻找复制 JMS Message/TextMessage 对象的正确方法,以便我可以在没有 JMS Session 对象的情况下添加自己的 header (因为我正在使用@JmsListener,我不想自己创建新 session 只是为了创建新消息)。

最佳答案

在这种情况下,您可以创建消息的新实例并复制 header 或将 session 作为参数添加到您的方法 processMessage 中,spring 将注入(inject)可用于创建新消息的 session (取决于实现,但我认为session 只会像第一个提案一样创建一个新实例)并复制标题

关于java - 如何在没有 Jms session 对象的情况下复制 javax.jms.TextMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832112/

相关文章:

java - 从 xml 填充 hashmap(java)

java - @Transactional 方法中的 Spring 事务处理 JMSTemplate

ssl - 使用 Websphere MQ Explorer 禁用身份验证

java - MessageListener如何在JMS中运行?能否实时加载队列中的消息?

java - fatal error : 'com.ibm.xtq.commons.utils.wrappedruntimeexception : the root element is required ina well formed document'

hadoop - 将 MQ 数据导入 HDFS

java - SSL 不适用于 IBM MQ 8 客户端 jar

java - 如何向 Java 应用程序添加参数

java - 将基于 Spring XML 的配置转换为基于 Java 的配置

java - Mybatis - 迭代属于 ArrayList 的 HashMap 的键/值