首页 > 解决方案 > 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, q0, r0, m0), 'App/status'
2020-08-26 07:13:20,829 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:21,784 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
**Here its 5 seconds gap**
2020-08-26 07:13:26,831 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:28,745 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:29,905 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:30,917 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:31,484 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
**Three seconds Gap**
2020-08-26 07:13:34,221 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:34,881 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:37,450 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:38,078 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
**Below Can be seen all missing messages received within 1 seconds**
2020-08-26 07:13:40,391 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,422 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,423 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,423 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,423 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,423 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,423 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,456 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,456 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:40,962 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:43,400 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:43,475 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:44,431 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:45,139 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:46,074 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'
2020-08-26 07:13:46,787 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'App/status'

虽然没有消息丢失,但我的应用程序需要在几秒钟内更新,奇怪的是这在 24 小时内随机发生两次或三次。

Update1: ​​经过大量优化和重构后,我终于找到了根本原因

Broker Tracs 的发布者: 在此处输入图像描述

发布者假设每 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, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,134 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,175 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,176 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,176 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,177 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,181 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,188 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)
2020-09-27 13:28:08,200 - DEBUG - Received PUBLISH (d0, q0, r0, m0), 'PKGCTRL/1/status/frequency', ...  (49 bytes)

标签: kubernetesactivemqamq

解决方案


推荐阅读