ActiveMQ主题消息被卡住,故障后会大量重新发送

问题描述

环境:

  • 在Kubernetes上部署ActiveMQ
  • 使用openwire的Producer Java应用程序
  • 使用MQTT的订户Python和C客户端

问题陈述:

  • 制作人每隔几秒钟就发送一次有关Topic的消息,而订阅者则相应地接收消息。

  • 但是有时某个时间一天或三次,订户停止接收消息大约4至8秒钟,然​​后客户端会在1秒内批量接收所有丢失的消息。

  • 我已在ActiveMQ中启用调试日志,但是找不到任何异常/错误或警告

以下是客户端日志

2020-08-26 07:13:18,852 - DEBUG - Received PUBLISH (d0,q0,r0,m0),'App/status'
2020-08-26 07:13:19,765 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:20,829 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:21,784 - DEBUG - Received PUBLISH (d0,'App/status'
**Here its 5 seconds gaP**
2020-08-26 07:13:26,831 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:28,745 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:29,905 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:30,917 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:31,484 - DEBUG - Received PUBLISH (d0,'App/status'
**Three seconds GaP**
2020-08-26 07:13:34,221 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:34,881 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:37,450 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:38,078 - DEBUG - Received PUBLISH (d0,'App/status'
**Below Can be seen all missing messages received within 1 seconds**
2020-08-26 07:13:40,391 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:40,422 - DEBUG - Received PUBLISH (d0,423 - DEBUG - Received PUBLISH (d0,456 - DEBUG - Received PUBLISH (d0,962 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:43,400 - DEBUG - Received PUBLISH (d0,475 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:44,431 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:45,139 - DEBUG - Received PUBLISH (d0,'App/status'
2020-08-26 07:13:46,074 - DEBUG - Received PUBLISH (d0,787 - DEBUG - Received PUBLISH (d0,'App/status'

尽管没有消息丢失,但是我的应用程序需要在几秒钟内更新,而且奇怪的是,在24小时和随机时间内,这种情况发生了两次或三次。

更新1: 经过大量的优化和重构后,我终于找到了根本原因

发布者到经纪人跟踪记录:

enter image description here

发布者假设每12毫秒发送一次频率状态,但是从13:28:08.132到13:28:08.174,它没有发送状态,然后在一条消息中发送了所有先前丢失的消息。

代理客户端日志 在下面的日志中,我们可以看到客户端在第175、176、176、177、181毫秒收到状态。客户对此很敏感,并希望每12毫秒发送一次消息,而不是一枪一发

2020-09-27 13:28:08,120 - DEBUG - Received PUBLISH (d0,'PKGCTRL/1/status/frequency',...  (49 bytes)
2020-09-27 13:28:08,134 - DEBUG - Received PUBLISH (d0,175 - DEBUG - Received PUBLISH (d0,176 - DEBUG - Received PUBLISH (d0,177 - DEBUG - Received PUBLISH (d0,181 - DEBUG - Received PUBLISH (d0,188 - DEBUG - Received PUBLISH (d0,200 - DEBUG - Received PUBLISH (d0,...  (49 bytes)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)