问题描述
我们系统使用ActiveMQ作用两个系统间的交互。现在的问题是,每发送几个消息(个数不定),就有一个消息被mq放到pending里,队列的消费者始终读不了这个消息。时间长了,pending的数量就缓慢的增长。什么情况下消息会被MQ留下来,不能收走呢?
解决方案
解决方案二:
是最新版本吗?有没有可能是它自身的一个bug
解决方案三:
消息数据被持久化,每条消息都能被消费,没有监听QUEUE地址也能被消费,数据不会丢失,一对一的发布接受策略,保证数据完整。一个消息只能由一个消费者消费;消息消费者消费消息时机是队列没有被消息提供者锁住,也就是说只有消息提供者执行了session.close()后消费者才会执行onMessage()方法。发布/订阅模式:订阅一个主题的消费者只能消费自它订阅之后发布的消息;一份消息可以被多个消费者消费。
解决方案四:
是点对点模式。
解决方案五:
引用3楼paragenius的回复:
是点对点模式。
你的这个问题就是代码的问题,一定是Receiver部分处理出现了问题。队列名称NumberOfPendingMessages是队列中有多少个消息等待出队列NumberOfConsumers是队列中有多少个消费者MessagesEnqueued是队列共有多少个信息MessagesDequeued是队列中已经出列多少个消息建议结合ActiveMQ官网和参考一下网上的实现代码,排查实验一下。
解决方案六:
解决方案七:
若是queue,去找消费端的问题,正常来讲queue除非堵了,不会出现一部分被消费一部分保留的情况,除非消费短有问题,拒绝了;若是topic,看看你分发时候是否确定有分发的消费端;
解决方案八:
请问问题解决了吗?我也有四个message卡在pending里。
时间: 2024-08-29 11:25:41