spring-boot - ActiveMQ 事务确认 - 关于主题消费者 -
问题描述
(在通过 activeMq 实现 pubsub 的 springboot 项目中),我想对消费者的“侦听器”进行事务确认,这样如果出现任何异常,消息代理(在本例中为 activeMq)只会继续重试传递 - 根据一些重审政策 - (或更可能是消费者不断拉动)。
正是这个问题在这里被问及并成功回答:@JmsListener 上的 ActiveMq 事务
尽管我对此进行了测试并且可以正常工作,但它仅适用于队列;对于主题消费者,尽管配置基本相同,但没有“重试机制”起作用。
有人知道(关于事务消费者)队列和主题之间是否存在一些根本区别?和/或在使用带有主题的事务型消费者时是否存在一些常见问题/陷阱?
提前致谢。
解决方案
万一将来有人遇到这个问题,解决问题的方法是让订阅者“耐用”。至于为什么这能解决问题,我不能 100% 确定;但我推测一个持久订阅者(因为即使消费者/订阅者离线,它也能够“存储消息以供以后传递”),它具有在“确认传递失败”的情况下重试所需的“设置” ”。
在虚拟主题的情况下,实现这种“交易”行为;然后需要将持久主题设置为false(因为从消费者的角度来看,虚拟主题是物理队列),我们还需要将pubSubDomain设置为false;
推荐阅读
- reactjs - React Native:在应用内打开外部 URL 和启动原生浏览器有什么区别
- c++ - 复制构造函数c ++在析构函数上返回奇怪的字母
- react-native - 在本机反应中保存json数据和文件的最佳方法?
- reactjs - 在反应导航下拉列表中链接“到”而不是“href”
- electron - 从 URL 运行 Electron 主进程
- spring-batch - ItemWriter 完成后如何执行逻辑?
- regex - REGEX 在最后一个找到的单词后得到总和
- javascript - 固定位置和响应能力
- python-3.x - Docker-py 客户端给出“无效的客户端端口规范”
- spring - Bean 名称的 BindingResult 和普通目标对象都不是 - 请告诉 mi 错误在哪里