Microservices ActiveMQ 5.16.1-消息被卡住

Microservices ActiveMQ 5.16.1-消息被卡住,microservices,activemq,messagebroker,Microservices,Activemq,Messagebroker,目前,我们的ActiveMQ 5.16.1出现了问题,它突然开始毫无理由地堆积消息。下图显示了ActiveMQ队列大小: ActiveMQ用作JMS消息代理,无需任何其他组件,例如高可用性或负载平衡。几个生产者(总共和最坏的情况大约20个)产生小的/简单的JSON消息,这些消息被发送到代理并被基于JAVA的微服务使用。微服务处理消息并将数据保存到Oracle数据库。一个请求的平均处理时间约为30毫秒。在这20个生产商中,只有一些在同一时间处于活跃状态,可能在2到10个生产商之间变化。每个制作人

目前,我们的ActiveMQ 5.16.1出现了问题,它突然开始毫无理由地堆积消息。下图显示了ActiveMQ队列大小:

ActiveMQ用作JMS消息代理,无需任何其他组件,例如高可用性或负载平衡。几个生产者(总共和最坏的情况大约20个)产生小的/简单的JSON消息,这些消息被发送到代理并被基于JAVA的微服务使用。微服务处理消息并将数据保存到Oracle数据库。一个请求的平均处理时间约为30毫秒。在这20个生产商中,只有一些在同一时间处于活跃状态,可能在2到10个生产商之间变化。每个制作人每3秒钟发送一条消息,每个制作人每分钟发送20条消息。例如:如果有10个制作人,代理将以每分钟200条或每秒30条的速度收到消息。保存顺序是非常困难的,因此我正在使用JMSXGroupIds,到目前为止效果很好。消息通过MQTT发送并(通过驼峰)路由到JMS队列:


ABC123
生产商
但是由于任何原因,消息在一段时间后被卡住了,我找不到任何重要的提示为什么会发生这种情况。日志文件和操作系统事件日志中没有任何内容。我必须重新启动ActiveMQ服务才能“重新激活”它。之后,所有被卡住的信息都将得到处理,一切正常,直到下一次“事故”发生。这一次,大约花了10天时间,邮件才被卡住

我已经检查了是否存在与网络或数据库相关的问题。甚至将ActiveMQ移动到一个新的服务器上,以确保没有其他任何东西影响ActiveMQ进程。但我也找不到任何提示。我观察了JVM、堆空间增长、内存使用等——所有这些都不显著


是否有人知道我还可以检查哪些内容来找出问题所在?

为这些主题添加有关降低消费者目标策略设置的建议,然后观看topic://ActiveMQ.Advisory.. 对于任何排队计数,这将表明发生了慢速消耗

您的骆驼路线几乎与VirtualTopic的路线相同。在这些类型的场景中,您将看到与服务器端路由更好的一致性,因为没有远程进程(即驼峰路由)来管理连接、会话等

好处:MQTT传输支持使用虚拟主题来后端订阅,因此您可以从队列中自动提取任何MQTT主题使用者


ref:

在消息开始累积期间,队列中的消费者会做什么?@JustinBertram-保持不变(目前允许10个中的8个)。此外,我还检查了客户是否被视为慢消费者——事实并非如此。尽管我没有看到任何可能被认为是慢消费的消费者,但我激活了“abortSlowConsumerStrategy”。不知道这是否有帮助,这更像是一种绝望的尝试去抓住它。谢谢你的建议!我会试试看是否会好起来。目前问题仍然存在。虽然没有遇到作为慢消费者的消费者,但会堆叠消息。只要我重新启动实例,消息就会被消耗,一切正常,直到下一次“崩溃”。