发送消息后,请在不使用消息的情况下检索JMS标头



发送消息后如何检索JMS消息标头,但不消耗消息?

这是我的消息发送代码

jmsTemplate.convertAndSend(que, text, message -> {
       LOGGER.info("setting JMS Message header values");    
       message.setStringProperty(RequestContext.HEADER_ID, id);
     //  LOGGER.info(message.getJMSMessageId()); -- this gives a null value here
       return message;
 });

仅在消息发布到队列后才会生成消息标头,因此使用MessagePostProcessor时,请使用一种简单的方法来检索JMS消息标头?

我已经转介了链接 - 在这里和这里,但没有太多帮助:(

您无法获得JmsMessageID标头,直到消息实际发送为止。邮政处理器只允许您在发送之前修改转换消息。

但是,您的第二个链接应该可以正常工作,因为它可以保存对邮件的引用。

编辑

确认:

@SpringBootApplication
public class So48001045Application {
    public static void main(String[] args) {
        SpringApplication.run(So48001045Application.class, args).close();
    }
    @Bean
    public ApplicationRunner runner(JmsTemplate template) {
        return args -> {
            final AtomicReference<Message> msg = new AtomicReference<>();
            template.convertAndSend("foo", "bar", m -> {
                msg.set(m);
                return m;
            });
            System.out.println(msg.get().getJMSMessageID());
        };
    }
}

ID:host.local-61612-1514496441253-4:1:1:1:1

相关内容

  • 没有找到相关文章

最新更新