发送activemq消息队列超时
- 可能是对应的消费者处理请求失败或者处理时间超长
- 可能是activemq没有将消息发送到server端
判断方法:看消费者端的日志,是否有收到请求,如果没有收到请求,查看消费者服务器的时间是不是超过MQ服务器的时间(activemq发现的问题)。
解决办法:如果是时间的问题,修改时间。不是时间问题重启mq
- 一台activemq挂了之后另一个启不起来
判断方法:如果mq消息调不通,三台机器中有activemq启动,则是此问题
处理方法:将三台activemq都关掉,再依次启动
- 多个消费者消费同一个队列的情况下,mq有几率将所有的消息都交给一个消费者消费。出现忙的忙死,闲的闲死的情况。
解决办法:限制每个消费者的预取消息数量,均匀每个消费者的消费数量。mq默认预取消息数量=1000,这个值对于多消费者,对于我们当前的情况来说实在是太高了,如果一个消费者预取了18条消息,那么这18条消息就只能由这个消费者来消费,18*5=90s,所以预取消息数不能大于18,暂定设置为10。再次实验发现没有再出现多条消息堆在一条队列中的情况出现。问题解决。
上一篇
为什么要禁止使用Executors创建线程池
下一篇
svn打tag并且合并在主干