如何访问@JmsListener使用的Spring Boot中的活动JMS连接/会话

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何访问@JmsListener使用的Spring Boot中的活动JMS连接/会话相关的知识,希望对你有一定的参考价值。

我正在尝试恢复由于目标无法访问而发送回ActiveMQ队列的消息。我正在避免重新交付政策,因为它不符合我的要求。我需要在我的应用程序中使用session.recover()在准确的时间恢复这些消息。

我目前正在使用接近默认的jms配置进行spring启动,以便使用@JmsListener注释。但是,我找不到一种方法来获取此注释使用的活动jms会话的句柄?

答案

只需在监听器中添加一个Session参数即可...

@SpringBootApplication
public class So55038881Application {

    public static void main(String[] args) {
        SpringApplication.run(So55038881Application.class, args);
    }

    @JmsListener(destination = "so55038881")
    public void listen(String in, Session session) {
        System.out.println(in + ":" + session);
    }

    @Bean
    public ApplicationRunner runner(JmsTemplate template) {
        return args -> template.convertAndSend("so55038881", "foo");
    }

}

foo:Cached JMS Session: ActiveMQSession {id=ID:host.local-52659-1551967879238-4:1:1,started=true} java.lang.Object@5bad3a2d

以上是关于如何访问@JmsListener使用的Spring Boot中的活动JMS连接/会话的主要内容,如果未能解决你的问题,请参考以下文章

Spring 4.1 @JmsListener 配置

我怎样才能停止/启动/暂停@JmsListener(干净的方式)

如何等待@JMSListener注释方法在JUnit中完成

Spring JMS:为@JmsListener注解的方法设置ErrorHandler

如何使用@JmsListener 暂停并开始使用消息

如何使用spring boot jms收听话题