夫天地者,万物之逆旅;光阴者,百代之过客。而浮生若梦,为欢几何?
RabbitMQ 入门篇之—持久化

前言

持久化(Persistent)做为AMQP协议的一大特点服务器将消息保存在可靠磁盘存储中,当服务器重启时,消息不会丢失;相较与非持久化(Non-Persistent)将消息保存在内存中,当服务器重启时,消息可能丢失,大大提高了容错率。RabbitMQ中分为队列、消息、交换机的3种持久化机制,下面我们分别对每种机制进行介绍。

RabbitMQ 刷盘机制

1. RabbitMQ在将数据写入文件时首先会将数据写入一个Buffer(一般为1M),如果这个Buffer已满,会将Buffer写入文件。

2. 固定的刷盘时间,系统会每隔25ms将Buffer中的数据写入文件。

3. 每次写入消息后,如果没有后续写入请求,也会直接将数据写入文件。

队列的持久化

将队列放在磁盘上,当RabbitMQ服务重启的时候进行恢复,如果不进行持久化设置,后续操作队列的时候会报错。为了方便演示我们使用图形界面控制台,下面是录屏视频:

消息的持久化

消息的持久化是建立在队列持久化的基础上的,因为我们的消息是从队列中获取的。下面是录屏演示视频:

交换机的持久化

RabbitMQ中交换机的概念我们会在后续章节详细介绍,这里只要明白RabbitMQ消息模型的核心是:发布者将消息传递给交换机,由交换机去决定将消息发往哪个队列。所以我们必须保证交换机做了持久化设置,否之遇到RabbitMQ重启,交换机丢失,那么我们的后续业务处理程序会出错。

作者:暗夜余晖

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

2

支持

0

反对

posted @2017-7-1  拜读(2953)

评论列表

评论内容:



喜欢请打赏

支付宝 微信

请放心支付