我有一个ActiveMQ,有400条消息排队,重新传递延迟为5分钟(没有Exp.回退(,最大重新传递尝试次数为288次。或多或少,在最坏的情况下,消息可能会在队列中24小时。。。或者这是最初的服务设计者的想法,但我必须经历一种不同的行为,消息似乎更多地保留在队列中。该服务是Tomcat上的WAR。
我的假设是:
- 重新交付是在客户端通过缓存消息和相关信息来完成的
- 因此,所有重新交付逻辑细节都存储在客户端/消费者处
当tomcat重新启动,war由于新版本而被CI/CD进程取代时会发生什么?…24小时计数器复位了吗?…是否存在最大数量的跟踪邮件?
肯定是。
所有的重新交付策略控制都是在客户端完成的(除非使用我听说过的代理插件(,并且没有持久性,因此重新启动客户端将使所有这些计数器重置并重新启动。
当传递成功时,使用者将发送ack,ActiveMQ(服务器(将减少消息计数。
在失败的情况下,考虑到重新传递策略,队列(服务器(将负责记录重试次数,因此是的,如果重新启动队列,则计数将重置。