0

我们有一个用例,其中我们只创建一个消费者来处理队列中的消息。消息处理器在确认之前累积一定数量的消息。以异步方式接收消息并使用事务处理会话。消息的大小非常小。

活动 MQ 在一定数量的消息后停止向唯一消费者发送更多消息并等待确认。我们已经尝试过像consumer.prefetchSizeconsumer.maximumPendingMessageLimit这样的解决方案;但没有任何工作。我们尝试了类似的用例,其中只有一个订阅者的持久主题,并且效果很好。

有没有人遇到过类似的 activemq 问题/行为?我们尝试了许多在不同论坛上提到的东西,但都没有帮助。

Activemq 版本:ActiveMQ 5.6.0
队列配置:持久队列
消费者:异步并使用事务处理会话作为确认模式

任何帮助或建议将不胜感激。谢谢。

4

1 回答 1

1

我已经尝试了很多不同的配置来通过设置不同的 activemq 属性(如预取策略、maxpagesize 等)来解决这个问题,但它们都没有真正帮助。通过参考@Jake 的评论,我了解了通过 JConsole使用 JMX 监控 activemq 。这是一个非常方便的工具来监控和管理你的 activemq。这里有几篇您可能会觉得有用的文章。
1.监控activemq
2.使用JConsole连接activemq JMX

通过监视队列属性,我发现memoryLimit属性分配给它的值非常低(只有 1mb)。增加属性的值解决了我的问题。JMS 无需等待确认即可开始发送消息。

出于测试目的,我在 conf/activemq.xml 配置文件中更改了memoryLimit的值。

于 2013-08-01T16:51:25.960 回答