对ActiveMQ客户端重新交付有深刻的理解



我有一个ActiveMQ,有400条消息排队,重新传递延迟为5分钟(没有Exp.回退(,最大重新传递尝试次数为288次。或多或少,在最坏的情况下,消息可能会在队列中24小时。。。或者这是最初的服务设计者的想法,但我必须经历一种不同的行为,消息似乎更多地保留在队列中。该服务是Tomcat上的WAR。

我的假设是:

  • 重新交付是在客户端通过缓存消息和相关信息来完成的
  • 因此,所有重新交付逻辑细节都存储在客户端/消费者处

当tomcat重新启动,war由于新版本而被CI/CD进程取代时会发生什么?…24小时计数器复位了吗?…是否存在最大数量的跟踪邮件?

肯定是。

所有的重新交付策略控制都是在客户端完成的(除非使用我听说过的代理插件(,并且没有持久性,因此重新启动客户端将使所有这些计数器重置并重新启动。

当传递成功时,使用者将发送ack,ActiveMQ(服务器(将减少消息计数。

在失败的情况下,考虑到重新传递策略,队列(服务器(将负责记录重试次数,因此是的,如果重新启动队列,则计数将重置。

最新更新