00:00
同学们,我们接下来讲一讲发布确认。发布确认呢,他先讲讲原理啊,这个发布确认呢,可以帮我们解决消息不丢失的一个重要环节。来,我们先一起看一下。首先呢,发消息。生产者注意,是生产者发消息啊,不要认为是消费者,是生产者发消息,他这儿发消息。对,给谁呢?给我们的这个叫队列对吧,也就是我们的MQ队列,随便起个队列名字啊,例如叫hello。那么在发消息的时候呢,会出现这么几种情况。首先生产者第一部分。第一部。你要设置。设置什么呢?设置要求队列必须持久化。哎,我们之前上节课的,呃,已经讲过了啊,持久化。完了呢,队列持久化之后呢?这能保证什么保证?
01:03
Rabbit MQ这个服务器一旦宕机了,也不至于队列消失,同时这个队列也被打上了一个字母。咱们看一下带了一个D字母,表示是持久化的。再往下。第一步,完成第二步。即使你又设置了什么呢,设置。要求。不止是队列,队列中的消息也必须持久化。持久化好,那么将这两个条信息你全都加上了吗?我们之前的代码呢,已经全都加上了。完了,这两条即使全都加上了,也会存在一个什么问题呢?存在于传送过程当中,到达队列当中,它为了持久化,必须得保存在磁盘上,对,这个不好写是吧,磁。
02:06
盘上。是不是词是吧,这不是词,所以呢,我们写一下。传到这边也要求必须保存在磁盘上才能达到持久化。才能达到持久化的目的。目标吧,啊目标。但是它有可能怎么呢?有可能传送到这边队列还没来得及保存到磁板上就已经棒机了。那么这样的话,即使你设置了这两条。也是消息,也是会丢失的。所以呢,必须要求做第三条叫发布确认。发布确认。什么叫发布确认呢?就是生产者将消息发送过去,由这边将消息存在磁盘上,注意一定是要保存在磁盘上之后。
03:01
MQ。要跟生产者说一声。说一声什么呢?说一声真的保存在磁盘上了,这件事儿叫发布确认。只有达到第三步发布确认,我们才能可以非常肯定的说,消息不会丢失。所以只有前两条是不行的,必须有第三条,一、二、三三条加一起,才能最终保证消息是不丢失的,稳稳的保存在MQ的磁盘上了。所以我们之前前两步啊,第一步第二步我们都已经做过了。代码都写完了。写在哪儿呢?写在生产者这边,我们去看一眼,已经写完了。写在哪里了呢?写在这里呢?首先第一个要求队列必须持久化。你看在声明队列时。
04:00
设置了一个处,表示队列持久化。发消息的时候一定小心,发消息的时候消息也标记了一个持久化,所以这算第一条,这算第二条,我们都已经完成。但是第三条还没做,所以呢,本节课我们要做一下第三条,只有把第三条做完了才能确保。生产者发送的消息是绝对。不丢失的。好,我们接下来呢,代码演示一下。代码演示呢,要分三种,对,要分三种啊,我们先说第一种。第一种呢,首先你要开启发布确认方法,也就意味着你得先开启一下。那怎么开启呢?代码在信道这里啊,说在信道当中调取一个select表示开启发布确认方法,默认是不开启的。所以我们直接开启一下。这呢,在发消息的时候,这是发消息啊,这是发消息从控制台输入。
05:07
这个位置。开始发消息,当然了,你也可以在这个位置声明,队列之前,只要你有了信道,你就可以先开启。发布。确认。对开启发布确认,那么信道开启啊,一切都是由信道开启的,第二。靠凤看他。这句话只要一掉就开启了,发布确认,这样的话,按照图上谁开启了这个箭头开启,因为这个箭头是新的。相当于将整个信道开启了发布确认模式。那么接下来要研究的是,到底是你发一个就确认一次呢,还是发一堆再确认呢?对吧?这呢,我们来说一说,是发一条你就给我确认一次,还是发发发发了不知道多少条了,完了你再统一确认一次呢?
06:07
对吧,所以说呢,我们接下来研究的就是。发消息到底是单个确认发布,还是批量确认发布,还是异步确认发布?所以确认发布有几种?有三种。有三种,分别对应单个。这呢看图啊,单个批量和一步三种,这三种我们一一的用代码去实现一遍,完了之后再去看看他们三个到底哪个最好。哪个最好用哪个。
我来说两句