赞
踩
持久化可以提高 RabbitMQ 的可靠性, 以防在异常情况(重启、关闭、宕机等)下的数据丢失 。RabbitMQ的持久化分为三个部分:交换器的持久化、队列的持久化和消息的持久化 。
交换器持久化
交换器的持久化是通过在声明交换器时将 durable 参数置为 true 实现的,如果交换器不设置持久化,那么在 RabbitMQ 服务重启之后,相关的交换器元数据会丢失,不过消息不会丢失,只是不能将消息发送到这个交换器中了。对一个长期使用的交换器来说,建议将其置为持久化的。
队列持久化
队列的持久化是通过声明队列时,将durable参数设置为true实现的。如果队列不设置持久化,那么rabbitmq服务重启之后,相关的队列元数据将会丢失,而消息是存储在队列中的,所以队列中的消息也会丢失。
消息持久化
队列的持久化能保证其本身的元数据不会因异常情况而丢失,但是并不能保证内部所存储的消息不会丢失。要确保消息不会丢失, 需要将其设置为持久化。通过将消息的投递模式(BasicProperties中的deliveryMode 属性)设置为2即可实现消息的持久化。
设置了队列和消息的持久化,当 RabbitMQ 服务重启之后,消息依旧存在。单单只设置队列持久化,重启之后消息会丢失;单单只设置消息的持久化,重启之后队列消失,继而消息也丢失,所以单单设置消息持久化而不设置队列的持久化也是没有意义的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。