RabbitMQ持久化消息

RabbitMQ持久化消息

RabbitMQ实现持久化消息需满足以下3个条件:

  1. delivery_mode=2
  2. 使用durable=True声明exchange是持久化
  3. 使用durable=True声明queue是持久化

delivery_mode

delivery_mode=2指明message为持久的.
delivery_mode 投递消息模式
1 . ram
2 . disc
设置为disc后能从AMQP服务器崩溃中恢复消息–持久化

但效率比 ram:disc = 3:1

durable

durable (默认false)
rabbitmq重启后queue和Exchange会被清除,包括数据。

注:

auto_delete: 当所有消费客户端连接断开后,自动删除队列。
exclusive: 仅创建者可以使用的私有队列,断开后自动删除。

RabbitMQ会自动删除这个队列,而不管这个队列是否被声明成持久性的(Durable =true)。
也就是说即使客户端程序将一个排他性的队列声明成了Durable的,只要调用了连接的Close方法或者客户端程序退出了,RabbitMQ都会删除这个队列。
注意这里是连接断开的时候,而不是通道断开。

分享到