RabbitMQ - 队列持久化与惰性队列的区别

在 RabbitMQ 中,durable 参数和 x-queue-mode 是两种不同的队列属性,它们分别控制不同的行为:

1. durable 参数

durable 参数决定队列是否在 RabbitMQ 服务器重启后仍然存在。

durable=true,队列是持久化的,队列的元数据(名称、属性等)会被保存到磁盘,即使 RabbitMQ 服务重启,队列也会恢复。

durable=false,队列是非持久化的,RabbitMQ 服务重启后,队列会被删除。

2. x-queue-mode : lazy

惰性队列是 RabbitMQ 3.6.0 引入的特性,它改变了消息的存储和加载行为:

  • 默认情况下,消息会尽可能存储在内存中以提高性能。

  • 惰性队列会将消息直接写入磁盘,仅在消费者需要时才加载到内存,从而减少内存占用。

  • 适用于消息量大、消费速度较慢的场景,避免内存爆满

3. 示例场景

durable=true + 非惰性队列:队列定义持久化,但消息默认在内存中。重启后队列存在,但未持久化的消息会丢失。

durable=true + 惰性队列:队列定义持久化,且消息直接写入磁盘。重启后队列和消息均保留。

你可能感兴趣的:(rabbitmq,分布式)