2

我正在使用 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 会自动转换它,但是我得到了不可变的对象,但是我的代码要求我保留现有的标头并在某些情况下添加新的标头。基本上我正在寻找复制 JMS Message/TextMessage 对象的正确方法,这样我就可以在没有 JMS Session 对象的情况下添加自己的标题(因为我正在使用@JmsListener,我不想自己创建新会话只是为了创建新消息)。

4

1 回答 1

1

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

于 2017-01-25T16:48:33.013 回答