首页 > 解决方案 > ActiveMQ 事务确认 - 关于主题消费者 -

问题描述

(在通过 activeMq 实现 pubsub 的 springboot 项目中),我想对消费者的“侦听器”进行事务确认,这样如果出现任何异常,消息代理(在本例中为 activeMq)只会继续重试传递 - 根据一些重审政策 - (或更可能是消费者不断拉动)。

正是这个问题在这里被问及并成功回答:@JmsListener 上的 ActiveMq 事务

尽管我对此进行了测试并且可以正常工作,但它仅适用于队列;对于主题消费者,尽管配置基本相同,但没有“重试机制”起作用。

有人知道(关于事务消费者)队列和主题之间是否存在一些根本区别?和/或在使用带有主题的事务型消费者时是否存在一些常见问题/陷阱?

提前致谢。

标签: spring-boottransactionsactivemq

解决方案


万一将来有人遇到这个问题,解决问题的方法是让订阅者“耐用”。至于为什么这能解决问题,我不能 100% 确定;但我推测一个持久订阅者(因为即使消费者/订阅者离线,它也能够“存储消息以供以后传递”),它具有在“确认传递失败”的情况下重试所需的“设置” ”。

在虚拟主题的情况下,实现这种“交易”行为;然后需要将持久主题设置为false(因为从消费者的角度来看,虚拟主题是物理队列),我们还需要将pubSubDomain设置为false;


推荐阅读