分布式消息服务RABBITMQ版-配置RabbitMQ惰性队列:使用场景
使用场景
默认情况下,RabbitMQ生产者生产的消息存储在内存中,当需要释放内存时,会将内存中的消息换页至磁盘中。换页操作会消耗较长的时间,且换页过程中队列无法处理消息。
如果生产速度过快(例如执行批处理任务),或者消费者由于各种原因(例如消费者下线、宕机)长时间内无法消费消息,导致消息大量堆积,使得内存使用率过高,换页频繁,可能会影响其他队列的消息收发。这种场景下,建议您启用惰性队列。
惰性队列(Lazy Queue)会尽可能的将消息存入磁盘中,在消费者消费到相应的消息时才会被加载到内存中,这样可以减少内存的消耗,但是会增加I/O的使用,影响单个队列的吞吐量。惰性队列的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储/消息堆积。
在以下情况下,推荐使用惰性队列:
- 队列可能会产生消息堆积
- 队列对性能(吞吐量)的要求不是非常高,例如TPS 1万以下的场景
- 希望队列有稳定的生产消费性能,不受内存影响而波动
处于以下情况时,无需使用惰性队列:
- RabbitMQ需要高性能的场景
- 队列总是很短(即队列中没有消息堆积)
- 设置了最大长度策略
更多关于惰性队列的说明,请参考Lazy Queues。
仅RabbitMQ 3.8.35版本支持惰性队列。
- 分布式消息队列是什么_分布式消息队列好处_消息队列-华为云
- 分布式消息中间件的作用_分布式消息中间件_分布式消息-华为云
- 分布式消息服务有哪些_分布式消息服务哪个好_分布式消息-华为云
- 分布式消息服务优势_分布式消息服务_消息队列-华为云
- RabbitMQ如何保证消息的可靠性_分布式消息系统_分布式消息RabbitMQ-华为云
- 为什么要使用RabbitMQ_RabbitMQ如何实现高可用性_分布式消息-华为云
- Kafka与其他消息队列的对比_什么是Kafka_分布式消息系统-华为云
- 分布式消息中间件实战_分布式消息实战_分布式消息-华为云
- RabbitMQ镜像下载
- kafka是什么_kafka介绍_分布式消息服务Kafka版