当前位置: 首页 > 知识库问答 >
问题:

如果使用者没有确认消息,ActiveMQ将停止向队列使用者发送消息

王英彦
2023-03-14

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

在一定数量的消息之后,主动MQ停止向唯一的消费者发送进一步的消息,并等待确认。我们尝试过像consumer.prefetchSize,consumer . maximumpendingmessagelimit;但是什么都不管用。我们用一个只有一个订阅者的持久主题尝试了类似的用例,效果很好。

有人遇到过类似的活动问题/行为吗?我们尝试了不同论坛上提到的许多事情,但都没有帮助。

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

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

共有1个答案

屠昌胤
2023-03-14

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

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

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

 类似资料:
  • 我是ActiveMQ新手。我曾尝试在activemq中实现生产者-消费者(发送者-接收器)。在我的代码中,我很容易发送 这是我的制片人 MsgProducer。Java语言 MsgConsumer.java 有谁能帮我找出向多个消费者发送信息的方法吗。提前谢谢。

  • 我是activeMQ的新手,在将消息从驻留在另一台服务器上的消息生成器推送到activeMQ定义的队列时遇到问题。 我在activeMQ上使用camel routes创建的应用程序中有几个队列。我尝试从另一台服务器上的应用程序对这些队列执行远程JNDI查找。我使用了来自http://activemq.apache.org/jndi-support.html页面的activemq文档片段。 我可以连

  • ActiveMQ消息组是跨多个使用者进行负载平衡的一个非常好的特性。简而言之:消息流根据消息中嵌入的组标识符()在单个队列的多个使用者之间进行分区。(因此,使用者1将获得的所有消息,使用者2将获得的所有消息,依此类推) 现在,假设您有两个队列:和,并假设在流经这两个队列的消息中使用一致的S分类法。代理为on queue选择的使用者是否与代理为on queue选择的连接相同? 但是,我们能模拟这种行

  • 我使用Spring JMS和ActiveMQ,其中有一个客户机将消息推送到队列,有多个使用者线程监听并从队列中删除消息。有些时候,相同的消息会被两个使用者从队列中出列。我不希望这种行为,并希望确保仅有的一条消息由一个消费者线程处理。你知道我哪里出了问题吗? ActiveMQ 5.9.1配置:

  • 我有一个简单的Kafka设置。生成器正在以较高的速率向单个分区生成具有单个主题的消息。单个使用者正在使用来自此分区的消息。在此过程中,使用者可能会多次暂停处理消息。停顿可以持续几分钟。生产者停止产生消息后,所有排队的消息都将由使用者处理。生产者产生的消息似乎不会立即被消费者看到。我使用的是Kafka0.10.1.0。这里会发生什么?下面是使用消息的代码部分: 代理上的所有配置都保留为kafka默认

  • 我有一只兔子。OpenShift上的6.10实例在启用MQTT插件的情况下运行。我有多个Spring Boot应用程序,使用EclipsePAHOMQTT实现,使用RabbitMQ队列中的消息。所有使用者都使用。持久性数据被写入具有100M配额的持久性卷上的目录。这是我为连接RabbitMQ队列而编写的代码: 现在我意识到,由于某些原因,如果重新启动消费应用程序,它将不再使用任何消息。正如我在Ra