温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们,我们上节课呢,讲了队列持久化。本节课呢,讲一讲消息持久化。同学们一定要搞清这个概念,什么叫队列持久化?什么叫消息持久化?队列是队列,消息是消息,不能混为一谈。队列它是MQ当中的一个组件,叫队列,例如hello队列。消息呢,是生产者发过来的消息。队列如果持久化了,但是消息不持久化依然是不能进行啊,保证消息不丢失的,因为消息一旦不能持久化,那么工作线程一旦执行失败,消息也会丢失,只是队列不会消失,但是队列里面的消息丢失了。所以呢,我们在发消息的时候一定要记住,注意是发消息的时候,生产者就应该通知队列,这个消息是需要持久化的啊,不能随便的丢失。
01:01
所以生产者的代码是需要改的。生产者代码改哪里呢?我们来一起看一下啊。生产者的代码。改的位置。一起看,改的是信道发布消息,注意生产者发布消息的时候,我们当时在第三个位置,这个参数是个纳值,表示这个消息并没有做任何的处理。但是实际上这个位置不应该写到。应该写一个叫消息的属性,应该为持久化,这个单词就是哎,持久化,文本持久化。应该添加这个属性,一旦你添加完这个属性,该消息标记为持久化了,并且不能完全保证不会丢失消息。那么尽量告诉MQ,将消息保存到磁盘。也就是这句话表示保存到磁盘。但是这里依然存在,当消息刚准备存到磁盘的时候,还没有存储好消息还在缓存当中的一个间隔点的时候,那此时还没有真正写入磁盘,持久化,持久性保证并不强,但是对于我们简单队列而言,这已经绰绰有余了。
02:20
如果需要强有力的持久化策略,请参考后续的发布确认章节,比如说我们后面会讲啊,后面还有一个发布确认。那么此时你只需要加这个属性,让它把消息保存到磁盘就可以了。至于保没保成功,我们后续再研究。好,这就是我们的消息持久化,来我们代码实现一下。应该是在生产者这边发送消息,对完曾经的这个属性之间都是那值,现在呢要求写。对,要求写持久化,所以在这个位置。哎,要求设置生产者。
03:03
发送消息为。持久化消息。实际意思是要求。保存到磁盘上。这样才能够真正的持久化,你要是不写这句话呢,它一般是保存在,诶,保存在内存中。保存在内存当中,那就是不是持久化的,随时可能会丢失的。所以这句话呢,应该是表示保存磁盘上怎么写呢?文档上要我们写message proper。所以你呢,可以直接粘过来。往这儿一放,往那子这一放。好,这就完成了。这样一放呢,就表示消息要被持久化到磁盘。注意,我们现在在哪呢?在生产者这边啊,生产者。创建队列,你看这呢,创建队列要求队列持久化。
04:01
发送消息,要求消息持久化。这样呢,就保证了消息不丢失,但是也不是绝对的。那么要想绝对的,就得参照后续章节的发布确认来完成。
我来说两句