当前位置: 首页 > 知识库问答 >
问题:

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

晏树
2023-03-14

我正在尝试恢复由于目的地无法到达而发送回ActiveMQ队列的消息。我正在避免重新传递策略,因为它不符合我的要求。我需要使用session.recover()在我的应用程序中准确地恢复这些消息。

我目前正在为Spring Boot使用接近默认的jms配置,该配置支持使用@JmsListener注释。然而,我找不到一种方法来获取该注释使用的活动jms会话的句柄?

共有1个答案

孟品
2023-03-14

只需向侦听器添加会话参数...

@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
 类似资料:
  • 问题内容: 如何获得服务器上所有活动的PHP会话的列表并从一个用户实例中访问它们? 激励的情况是显示站点上所有当前活动用户的列表,用户名存储在每个用户的PHP会话中。 注意:我知道我可以通过数据库(甚至文件系统)创建自己的状态,但是我正在寻找一种利用内置PHP会话机制的方法。 问题答案: 看到响应,尽管有可能,但这并不意味着您 应该 这样做。会话的存储格式没有记录,并且可能随时更改(即使在次要版本

  • 我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。 现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。 客户请求代码: 上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据

  • 我正在使用配置了多个数据源的Spring Boot 1.5.17。我的一个数据源配置如下。 现在,如何获取或记录此数据源的连接池中的活动连接数?

  • 问题内容: 如何以一种优雅的方式通过id获取任何HTTP会话或Web应用程序(Java 2 EE)中当前所有活动的HTTP会话? 当前,我有一个会话,一旦创建,便将其放入,一切正常,我可以随时通过会话ID从该映射中检索HTTP会话,但是看起来对象将永远不会完成……即使会话使该映射无效仍然引用无效的会话对象…我也已经阅读了这篇文章,在我看来,这是不可接受的… 换句话说,我需要一种可能性来查看任何Ht

  • 问题内容: 如何查看我的池库(C3P0)创建和关闭JDBC连接的时间? 注意:我已经对此进行了研究,并且已经找到了解决方案。我将其发布在这里,以便对其他人有用,并且可以参考以防万一将来忘记它。 欢迎其他方法/答案。 问题答案: 库可用于记录JDBC连接。将此库添加到POM- 配置。修改日志记录选项以根据自己的需要调整详细信息级别。 配置数据源。 关于上述数据源配置的注意事项: 您通常的驱动程序类名

  • 我试图以一种可伸缩的方式将Spring JMS消息与@JMSListener一起使用,但我没有看到它发生。我有一个ConnectionFactory bean,它返回通过JMS和数据库数据源池连接到Oracle高级队列的工厂。 当每个@JMSListener接收器再次连接到JMS(从而连接到数据库池)时,问题就开始了。我的理解是,我可以有许多@JMSListener方法,每个服务一个,但这样做我是