慢消费者:消费消息过慢的consumer/subscriber。
慢消费者会对broker产生影响,尤其是non-durable的topic和queue,topic尤甚,会导致broker的内存爆满,阻塞publisher。
1. Non-durable Topics
受慢消费者影像最大,发送到non-durable topic的消息不被持久化且消息还要发送给所有的subscribers。慢的subscriber会使消息积压,内存占用上涨,导致publisher阻塞,间接影响到快的subscriber消费消息。
应对策略:
- 阻塞/放慢publisher的投放速度
- 断开慢的subscriber连接
- 缓冲消息到磁盘
- 丢掉慢subscriber的消息
- 自定义插件扩展策略
2. Durable Topics
消息会持久化到磁盘,内存中的消息可以丢掉,如果有足够大的磁盘,慢subscriber会被deal well。
但如果慢subscriber慢太多的话,说明还是哪里出了问题,Virtual Topic?设计上的?
3. Durable queues
消息会持久化到磁盘,内存中的消息可以丢掉。No Problem,况且还有其他的consumer帮你消费,但如果消息还是被积压很多,说明设计出了问题,消费消息太慢,消费速率赶不上生产速率。
3. Non-durable queues
通常个别几个慢consumer不是问题,有快的consumer会帮你消费,但如果全部consumer都慢,那就是问题了。
应对策略:
- 阻塞producer
- 缓冲消息到磁盘
- 丢掉队列中的消息
// TODO add Blocked Transport & Implementation Solutions