Spring DefaultMessageListenerContainer和ActiveMQ
我已将Spring DefaultMessageListenerContainer配置为消耗来自队列的消息的ActiveMQ使用者.我们称之为“Test.Queue” 所有4台机器都启动并运行后,我将最大消费者大小设置为20,我看到消费者数量与队列数相比为80(4 *最大消费者大小= 80) 当生成并发送到队列的消息变得很高时,一切都很好. 当有1000个消息时,在80个消费者中,让我们说其中一个被卡住它会冻结Active MQ以停止向其他消费者发送消息. 所有消息都永远停留在ActiveMQ中. 由于我有4台机器,最多有80名消费者,我不知道哪个消费者没有承认. 我停下来重新启动所有4台机器,当我停止那些卡住了坏消费者的机器时,消息再次开始流动. 我不知道如何配置DefaultMessageListenerContainer以放弃坏消费者并立即发信号通知ActiveMQ以开始发送消息. 即使没有Spring,我也可以创建场景,如下所示: >我最多生成了5000条消息并将它们发送到“Test.Queue”队列 假设A,B,C是由Spring的使用DefaultMessageListenerContainer管理,我该如何调整弹簧使用DefaultMessageListenerContainer采取坏消费掉池(在我的情况消费者B)后未能确认为x秒,承认经纪人立刻让经纪人没有永久保留消息. 谢谢你的时间. 感谢我能解决这个问题. 最佳答案
这里有几个选项可供尝试……
>将队列预取设置为0,以促进更好地分配给消费者,并减少特定消费者的“卡住”消息.见http://activemq.apache.org/what-is-the-prefetch-limit-for.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |