activemq消息一直pending

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activemq消息一直pending相关的知识,希望对你有一定的参考价值。

从web控制台看,消息一直在pending状态。消费者的receive()处于阻塞状态。
如果重启activemq服务,部分pending的消息就会被发出去;如果不重启 则一直pending。
activemq版本:5.3.0
消费者用了selector
网络正常(端口开放、ping速正常、scp传输数据正常)

有人说是selector问题。但是这种情况只发生在部分消费者上,其他的(跟该消费者一样)则没有该问题

求解~~~~
在线等~~~
不懂的就别回答了~~ 浪费时间~ 请自重

参考技术A 首先,你确定重启MQ之后,pending中没有了的消息是被发送而不是丢失了么?
其次,你有没有试过重启MQ之后再重启下消费者的应用?有时候MQ和消费者的连接丢失之后,重启MQ并不能重新建立连接。
最后,仔细检查下代码,是不是消费者逻辑有误,自己锁住了没有释放资源?

Good luck……追问

1、pending的消息被发送了,因为消费者收到了
2、重启MQ时,消费者后台日志(大概意思):EOFException,将在1000S之后reconnect,MQ重启成功后,消费者后台日志:连接tcp:ip...成功。说明重启MQ之后 消费者是会自动重连的。
3、如果资源被锁,为何在重启MQ之后资源被释放(消费者和MQ不在同一台服务器)?

php 监听activemq 消息队列,需要把监听程序的php文件一直打开么?

监听(消费者)文件一直打开会不会有问题,能不能将监听文件添加到系统进程里呢?

需要起一个常驻进程来运行这个PHP文件,注意将最大运行时间设置为无限(set_time_limit(0))及日志写入,方便出现问题排查。理论上来说,PHP不适合做常驻进程。 参考技术A window下你可以把写个bat文件执行你的php文件。然后加入系统计划或者系统服务。linux下写个定时任务就行了,

以上是关于activemq消息一直pending的主要内容,如果未能解决你的问题,请参考以下文章

多播、消息传递、ActiveMQ 与 MSMQ?

ActiveMQ(15):Message Dispatch的消息游标与异步发送

ActiveMQ学习第七篇:Message Dispatch(消息发送)的特性

ActiveMQ简单介绍以及安装

深入浅出JMS--ActiveMQ简单介绍以及安装

深入浅出JMS--ActiveMQ简单介绍以及安装