00:01
我们关于Q的持久化。再给同学们介绍一下。Q,持久化表示消息是可以进行持久化存储的。我们可以将。队列和消息都标记为持久化。那么我们持久化的目的就是让消息不要丢失。让消息在rabbit MQ当中能够保存。尤其是当消费者。崩溃时,宕机时。那么这个时候MQ。就应该保存消息,或者是MQ本身自己退出了,或者是由于某种原因崩溃了。那么他忽视队列的核消息。这样呢,会造成消息不丢失。那么我们消息不丢失是怎么做到的呢?就是在这儿呢?在队列实现持久化,是在写代码的时候。
01:05
尤其是在创建队列的时候。我们之前这个队列声明已经创建过了。咱们可以翻看一下咱们之前写的代码。尤其是发消息的时候,我们在第二行的时候就已经声明队列,此时此刻队列并没有进行持久化,你看,持久化是false。也就意味着,一旦出现。这个叫MQ宕机时。此消息是可能丢失的,队列中的消息没有被持久化,那么怎么能证明已经持久化呢?只需要将声明。当中的这个持久化的数据,False改成true就会持有化。而我们现在声明的队列名称叫ACK,那么我们就看一眼。到底有没有持久化?你看,如果真的持久化了。
02:02
如果真的持久化了。我们这个位置看到的应该会有一个哎提示啊提示,例如有一个D字母,D字母呢,它是这个持有化。单词的头字母。也就是这呢,持久化单词叫Du,那如果你真的持久化了,那么它这个位置就是首字母嘛,是个大是个D,完了呢,写成大写的,大写的D就表示。持久化。对吧,那么现在显然是没有持久化。那么如果真的持久化了,长的样子应该长成这样。同学们可以看到这个队列,这个位置对这个单词念特色是吧,哎,什么样的一个特色,或者什么样的一个属性,那么这个位置会多一个D字母,而咱们现在就没有。就证明这个队列和的队列都是没有被持久化,这个时候非常怕什么呢?害怕我们的这个叫rabbit MQ,一旦宕机,这两大队列就消失了。
03:09
为了保证两大队列不消失,最好怎么呢?最好进行持久化,那么代码呢,怎么写呢?就应该是这么写的。对,在我们声明队列时,这个持久化的位置改成改成true。那么我们之前的代码可以改吗?可以改,马上就能改吗?马上就能改,例如。我们在这个位置弄一个啊布尔类型是吧,哎,布尔类型。我弄一个持久化是吧,哎,Du,这个持久化呢,我们可以改成哎,True表示需要对列是吧,需要。需要让困队列进行。持久化,那么这个时候你把它再放到这个位置啊,这样我们产生的队列就持久化。
04:02
对,这样呢,就产生了持久化,那么但是你得运行它才能生效,但是等你一运行,有可能它会报一个错误,你看报一个什么,报一个失败。这个失败的原因就是这个。队列诶。当前就是false表示就就是不持久化的,你给强行改成持久化,它就会报这个错误。对,这个错误呢,就是队列不是持久化的,是已经原先对原先产生的,如果你要产生一个新的需要持久化的,你应该先删除,再重新创建一个持久化队列,不然就会报这个错误。咱们一起报一下试试啊,那么咱们这么的将下面的这些先关掉啊关掉哎,我们都关掉啊,之后重新启动一下。这次启动呢,就会报错,你看报错了。
05:01
报的错误信息是不是就是文档上的信息呢?哎,就是文档上的信息,你看表示持久化队列当中,当前是false,对,不能改成true。那怎么办?需要删除呗。那么怎么删呢?这么删哎,你可以到这里面直接将这队列删掉。这个位置有一个删除队列,删除。删除了,是不是只剩卡漏了完紧接着你再重新运行这段程序,诶,它就能够创建一个新的了,你看这回就不报错了,不报错之后呢,你会发现这里面哎,就产生一个新的队列,而队列这个位置加了一个大写的D字母,表示19化了。是持久化单词的。首字母大写。你看单词持久化单词叫这个名字,哎,首字母D大写表示持久化了,哎,这就是我们关于MQ持久化的一个一个处理。
06:01
一旦你把它改成持久化处理了,这时候即使重启Q队列,它也是依然存在。对,那么但是hello就不存在了,因为hello它没有被持久化,它没有这个D字母的这个标记是吧,所以说重启MQ之后就hello就不存在了。但是这个在存在啊。
我来说两句