消息队列服务器宕机,RabbitMQ消息队列怎样做到服务宕机或重启消息不丢失

一、消息为什么丢失

RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,它决定了RabbitMQ是否需要在崩溃或者重启之后重新创建队列(或者交换机)。

二、持久化交换机和队列

将交换机和队列的durable属性设置为true,这样你就不需要在服务器断电后重新创建队列和交换机了。你也许会认为把队列和交换机的durable属性设置为true就足够可以让消息幸免于重启后丢失了,真的是这样吗?队列和交换机当然必须被设置为true,但光这样做还不够。

能从AMQP服务器崩溃中恢复的消息,我们称之为持久化消息。在消息发布前,通过把它的“投递默认”( delivery mode)选项设置为2(AMQP客户端可能会使用人性化的常量来代替数值)来把消息标记成持久化。到目前为止,消息还只是被表示为持久化的,但是它还必须被发布到持久化的交换机中,并到达持久化的队列中才行。如果不是这样的话,则包含持久化消息的队列(或者交换机)会在Rabbit崩溃重启后不复存在,从而导致消息丢失。

三、持久化消息

因此,如果消息想要从Rabbit崩溃中恢复,那么消息必须满足以下条件:

1. 把它的投递默认选项设置为持久化

2. 发送到持久化的交换机

3. 到达持久化的队列

做到以上三点,你就不需要担心发送到Rabbit服务器的消息因服务器崩溃等其它原因而丢失了。

四、如何做到消息持久化的

RabbitMQ确保持久性消息能从服务器重启中恢复的方式是,将它们写入磁盘上的一

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值