美文网首页消息队列
10.RabbitMQ持久化

10.RabbitMQ持久化

作者: 12点前睡觉hhh | 来源:发表于2019-05-29 13:12 被阅读0次

持久化可以提高RabbitMQ的可靠性,以防在RabbitMQ重启、关闭、宕机下的数据丢失。

1.交换器的持久化

交换器的持久化是在声明交换器的时候,将durable设置为true。如果交换器不设置持久化,那么在RabbitMQ交换器服务重启之后,相关的交换器信息会丢失,不过消息不会丢失,但是不能将消息发送到这个交换器。

2.队列对持久化

队列的持久化在声明队列的时候,将durable设置为true。如果队列不设置持久化,那么RabbitMQ交换器服务重启之后,相关的队列信息会丢失,同时队列中的消息也会丢失。

3.消息的持久化

消息的持久化是在BasicProperties中设置deliveryMode设置为2。队列的持久化能保证本身的元数据不会因为异常而丢失,但是不能保证内部所存在的消息不会丢失。要确保消息不丢失,需要将消息持久化。
如果将所有的消息都进行持久化操作,这样会严重影响RabbitMQ的性能。写入磁盘的速度比写入内存的速度慢很多。所以要在可靠性和吞吐量之间做权衡。

将交换器、队列和消息都进行持久化操作后,也并不能保证消息一定不会丢失。
1.对于消费者来说,如果在订阅消息的时候,将autoAck设置为true,那么消费者接收到消息后,还没有处理,就出现了异常挂掉了,此时,队列中已经将消息删除,消费者不能够在收到消息。这种情况可以将autoAck设置为false,进行手动确认。
2.在持久化后的消息存入Rabbit'MQ之后,还需要一段时间才能存入磁盘。RabbitMQ并不会为每条消息都进行同步存盘,可能仅仅是保存到操作系统缓存之中而不是物理磁盘。如果在这段时间,服务器宕机或者重启,消息还没来得及保存到磁盘当中,从而丢失。对于这种情况,可以引入RabiitMQ镜像队列机制。

相关文章

  • 10.RabbitMQ持久化

    持久化可以提高RabbitMQ的可靠性,以防在RabbitMQ重启、关闭、宕机下的数据丢失。 1.交换器的持久化 ...

  • Redis--(持久化,用户认证,禁用或重命名危险命令)

    01,持久化 1.RDB持久化和AOF持久化 2.RDB持久化流程图 3.配置RDB持久化 4.RDB持久化结论:...

  • 03-redis持久化

    Redis持久化 两种方式持久化: RDB持久化 - 全量 AOF持久化 - 增量 RDB持久化 RDB文件的生成...

  • RabbitMQ 消息持久化机制(消息不丢) --- 2022-

    RabbitMQ持久化机制分为队列持久化、消息持久化、交换器持久化。不管是持久化的消息还是非持久化的消息都可以被写...

  • Docker学习(13) 卷与持久化数据

    Docker学习(13) 卷与持久化数据 卷与持久化数据——简介 数据主要分为两种:持久化和非持久化。 持久化:就...

  • 6 保证消息不丢失

    1 消息持久化 1.1 exchange持久化 1.2 queue持久化 1.3 消息持久化 2 消费者ACK确...

  • iOS持久化方式有哪些

    首先这里的持久化指的是数据持久化,目前客户端的持久化也只有这一个含义。为何要持久化:iOS开发可以没有持久化,持久...

  • redis持久化-补充redis5.0 集群露点

    redis持久化策略 1.rdb 持久化 (默认持久化方式)其默认持久化策略 save 900 1 表示red...

  • 持久化

        rabbitmq的持久化分成三个部分:交换器的持久化、队列的持久化和消息的持久化     交换器的持久化是...

  • 【code_hyy_基础】iOS持久化方式

    首先这里的持久化指的是数据持久化,目前客户端的持久化也只有这一个含义。 为何要持久化: iOS开发可以没有持久化,...

网友评论

    本文标题:10.RabbitMQ持久化

    本文链接:https://www.haomeiwen.com/subject/dpoetctx.html