java - 如何访问@JmsListener 使用的 Spring Boot 中的活动 JMS 连接/会话
问题描述
我正在尝试恢复由于目标无法到达而发送回 ActiveMQ 队列的消息。我正在避免重新交付政策,因为它不符合我的要求。我需要使用 session.recover() 在我的应用程序中的准确时间恢复这些消息。
我目前正在为 Spring Boot 使用接近默认的 jms 配置,它可以使用 @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
推荐阅读
- vb.net - 如何在 Vb.net 中使用函数返回多个值
- security - 利用打开的 UPnP 端口
- c# - 导出 gridview 数据时的随机 HTML
- python - 如何在 Tkinter 中清除坐标?
- reactjs - React 路由器配置中 HoC 的 Typescript 类型
- derby - Apache Derby 无法删除数据库中的记录,因为没有足够的时间
- c# - 完全设置 .NET Core Web API 以使用 Azure AD 身份验证
- typescript - 如何使用记录键作为函数 arg 类型的索引?
- redis - 如何在 Windows 7 上的命令提示符下从 Redis 客户端的输出中漂亮地打印 json 字符串?
- mysql - 没有root权限可以通过ansible安装和配置MariaDB吗?