当前位置: 首页 > article >正文

RabbitMQ系列学习笔记(五)--持久化机制

文章目录

  • 一、概念
  • 二、队列持久化
  • 三、消息持久化

本文参考:
尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq
RabbitMQ 详解
Centos7环境安装Erlang、RabbitMQ详细过程(配图)

一、概念

在RabbitMQ系列学习笔记(四)–消息应答机制中我们已经看到了如何处理任务不丢失的情况,即消息应答和失败重新入队机制。但是如何保障当RabbitMQ服务停掉以后消息生产者发送过来的消息不丢失。需要做两件事:将队列和消息都标记为持久化。

二、队列持久化

之前创建的队列都是非持久化的,rabbitmq如果重启的话,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把durable参数设置为 true(持久化)。
image.png
但是需要注意的就是如果之前声明的这个队列不是持久化的,需要把原先队列先删除,或者重新创建一个不同名的持久化队列,不然就会出现错误。
image.png
以下为控制台中持久化与非持久化队列的UI显示区:蓝色的大写字母D表示该队列是持久化的。
image.png
这个时候即使重启rabbitmq队列也依然存在。

三、消息持久化

要想让消息实现持久化需要在消息生产者修改代码,添加MessageProperties.PERSISTENT_TEXT_PLAIN这个属性。
image.png
当设置为消息持久化后,消息不仅会保存在内存,还会持久化一份到磁盘中,即使故障重启,消息还在。
但是这种情况并不能保证数据一定不会丢失,假如一条消息刚准备存储到磁盘的时候,还没存储完,消息并未真正完全写入磁盘,出现了故障,仍然有可能会丢失消息。保障数据安全性还需要结合发布确认机制共同实现。


http://www.kler.cn/news/359057.html

相关文章:

  • 四川方维嘉术科技有限公司简介
  • C#中判断的应用说明一(if语句)
  • 梦熊十三联测 D题 电报
  • ES 8分片分配迁移和恢复
  • 鲸信私有化即时通信如何平衡安全性与易用性之间的关系?
  • Proximal Distance Algorithm (近段距离算法)
  • AI Weekly2:过去一周重要的AI资讯汇总
  • Loss:Focal Loss for Dense Object Detection
  • sql数据库命令行操作(数据库的创建和删除)
  • sql-labs靶场第十四关测试报告
  • Wireshark下载和安装
  • 计算机网络——无连接传输UDP
  • go 包相关知识
  • 20241021下载B站json格式的字幕并通过python3转换成为SRT格式
  • DNS代理是什么?浅析DNS代理的工作原理及应用
  • 大数据存储计算平台EasyMR:大数据集群动态扩缩容,快速提升集群服务能力
  • 浅谈c#编程中的异步编程
  • @JsonIgnoreProperties做接口对接时使用带来的好处
  • 数据中心母线槽测温监控装置的优势和如何选型
  • AJAX——AJAX 取消请求