ActiveMQ的慢消费者

慢消费者:消费消息过慢的consumer/subscriber。html

慢消费者会对broker产生影响,尤为是non-durable的topic和queue,topic尤甚,会致使broker的内存爆满,阻塞publisher。apache

1. Non-durable Topics

受慢消费者影像最大,发送到non-durable topic的消息不被持久化且消息还要发送给全部的subscribers。慢的subscriber会使消息积压,内存占用上涨,致使publisher阻塞,间接影响到快的subscriber消费消息。spa

应对策略:插件

  • 阻塞/放慢publisher的投放速度
  • 断开慢的subscriber链接
  • 缓冲消息到磁盘
  • 丢掉慢subscriber的消息
  • 自定义插件扩展策略

2. Durable Topics

消息会持久化到磁盘,内存中的消息能够丢掉,若是有足够大的磁盘,慢subscriber会被deal well。设计

但若是慢subscriber慢太多的话,说明仍是哪里出了问题,Virtual Topic?设计上的?htm

3. Durable queues

消息会持久化到磁盘,内存中的消息能够丢掉。No Problem,何况还有其余的consumer帮你消费,但若是消息仍是被积压不少,说明设计出了问题,消费消息太慢,消费速率赶不上生产速率。队列

3. Non-durable queues

一般个别几个慢consumer不是问题,有快的consumer会帮你消费,但若是所有consumer都慢,那就是问题了。内存

应对策略:io

  • 阻塞producer
  • 缓冲消息到磁盘
  • 丢掉队列中的消息

// TODO add  Blocked Transport & Implementation Solutions扩展

http://activemq.apache.org/slow-consumers.html