一、前言
如果我们希望即使在RabbitMQ服务重启的情况下,也不会丢失消息,我们可以将Queue与Message都设置为可持久化的(durable),这样可以保证绝大部分情况下我们的RabbitMQ消息不会丢失。当然还是会有一些小概率事件会导致消息丢失。
二、队列持久化
2.1 查看存在的队列和消息数量
在windows环境下,在rabbitmq的安装目录/sbin下,通过rabbitmqctl.bat list_queues查看
这边启动了两个producer,分别生成两个队列hello 和 hello1,并且他们都有一个消息存在
重启rabbitmq,模拟故障
可以看到重启后两个队列都消失了
2.2 持久化队列
我们就hello队列持久化
在声明队列名称时,持久化队列,生产端和消费端都要
channel.queue_declare(queue='hello', durable=True)
我们重复上面的操作,但是给hello队列做持久化,而hello1不做,并重启rabbitm