ActiveMQ";冻结“;关于队列消费的消息

ActiveMQ";冻结“;关于队列消费的消息,activemq,Activemq,ActiveMQ:5.10.2在ServiceMix的Karaf OSGi中 卡哈卜坚持 默认代理设置。 连接中的默认设置(tcp://x.x.x.x:61616) activemq.xml中预定义了16个队列 到ActiveMQ的两个客户端连接。一个用于生产者会话,一个用于消费者会话 生产者向所有队列发送消息 16个使用者会话使用消息 一切正常,但: 如果我将消费者的数量减少到1(或2或3,我不知道阈值在哪里),那么来自1个队列的消息将被消费,而来自另一个队列的消息将被存储。 一段时间过去了,

ActiveMQ:5.10.2在ServiceMix的Karaf OSGi中

卡哈卜坚持

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

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

到ActiveMQ的两个客户端连接。一个用于生产者会话,一个用于消费者会话

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

16个使用者会话使用消息

一切正常,但: 如果我将消费者的数量减少到1(或2或3,我不知道阈值在哪里),那么来自1个队列的消息将被消费,而来自另一个队列的消息将被存储。 一段时间过去了,我看到了这样的画面:

  • 1消费者停止接收信息。他认为没有更多的信息了
  • 从activemqweb中,我可以看到该消费队列上的消息计数>0
  • 在activemqweb中,我无法在该消费队列的消息浏览器中看到任何消息
  • 我可以在邮件浏览器中看到来自其他队列的邮件
  • 如果启动其他使用者(或重新启动activemq)来使用来自不同队列的消息,我会看到:

  • 我开始在第一个队列消息浏览器中看到消息(之前发送但在“冻结”后未看到的消息)
  • 第一个队列继续消耗
  • 第二个队列开始消耗
  • “冻结”可能会在一段时间内再次发生,并开始使用另一个队列,这将再次有所帮助
  • 如果我启动所有消费者,我看不到“消息冻结”。 若只是在“冻结”队列上停止并启动消费者,则不会发生任何事情。需要在“解冻队列”上执行“解冻”“冻结队列”

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

    可能是什么


    谢谢。

    。我找到了它是什么

    只是超出了可用内存

    我没有设置-Xms和-Xmx,所以它的最大堆容量只有512mb


    当存储和未使用的消息大小接近顶部时,我会得到这些行为

    如果我只有一个队列并从中生成和使用消息,我也不会看到任何冻结。因此,只有当存在多个包含消息的队列且并非所有队列都在使用消息时,才会发生这种情况……请注意队列的负载平衡。它看起来像是每个消费者将消息安排到内部队列中