RabbitMQ 持久化机制
概述
前面讲到了 生产者消息确认机制 和 消费者消息确认机制,保证了消息传输的可靠性,但是这还不够,试想如果 Broker 突然崩溃,那么所有的 交换机、队列、消息 不就全部都没了(RabbitMQ 以内存为主,硬盘为辅,默认交换机和队列都是非持久化的). 因此需要持久化机制.
a)交换机持久化
:
如果交换机不设置持久化,那么在 rabbitmq 服务重启之后,相关的交换机元数据就会丢失,对一个长期使用的交换机来说,建议设置成持久化的.
交换机的持久化是通过声明时将 druable 参数设置为 true 实现的,这样交换机的属性就会在 硬盘 保存,当 MQ 意外关闭之后,重启 MQ 时服务自动恢复交换机数据.
b)队列持久化
:
如果队列不设置持久化,那么再重启 MQ 之后,队列就会丢失,这也就意味着,无论队列中的消息是否持久化,也都会跟着丢失.
队列的持久化是通过声明时将 druable 参数设置为 true 实现的,但是这样并不能保证内部存储的消息一定不会丢失. 要确保消息不丢失&#x