首页 文章

队列消耗时ActiveMQ“冻结”消息

提问于
浏览
0

ActiveMQ:5.10.2在ServiceMix的Karaf OSGi中

KahaDB坚持不懈 .

默认代理设置 . 连接中的默认设置(tcp://x.x.x.x:61616)

activemq.xml中预定义的16个队列 .

与ActiveMQ的两个客户端连接 . 一个用于 生产环境 者会话,一个用于消费者会话 .

生产环境 者向所有队列发送消息 .

16个消费者会话消费消息 .

一切正常,但是:如果我将消费者数量减少到1(或2或3,我不知道阈值在哪里),以便来自1个队列的消息正在消耗,而来自其他队列的消息正在存储 . 虽然有些时间过去了,但我看到这张照片:

  • 该1个消费者停止接收消息 . 他认为没有更多的消息 .

  • 从activemqweb我可以看到该消耗队列的消息计数> 0

  • 来自activemqweb我在消息队列中的消息浏览器中看不到任何消息 .

  • 我可以在消息浏览器中看到来自其他队列的消息 .

如果我启动其他消费者(或重新启动activemq)来使用来自不同队列的消息,我会看到:

  • 我开始在第一个队列消息浏览器中看到消息(之前发送但在"freeze"之后没有看到的消息) .

  • 第一个队列继续消耗

  • 第二个队列开始消耗 .

  • "freeze"可能会在一段时间内再次出现并开始消耗另一个队列将再次有所帮助 .

如果我启动所有消费者,我看不到“消息冻结” . 如果只是在“冻结”队列上停止并启动消费者,则没有任何反应 . 需要在“解冻队列”上进行“解冻”“冻结队列” .

如果没有活跃的 生产环境 者,只有消费者,也会发生这种情况 .

它能是什么?

谢谢 .

1 回答

  • 0

    Oups . 我发现它是什么 .

    它只是可用的内存超出 .

    我没有设置-Xms和-Xmx,因此它只运行512mb的最大堆 .

    当存储和未消费的消息大小被关闭到顶部时,我得到这些行为 .

相关问题