00:00
我们再讲第三种叫异步确认发布。一步确认发布呢,虽然在编程逻辑上要比上两个,上两个是谁呀?一个是单个确认发布,一个是批量确认发布,要比这两个复杂的多得多得多,但是性价比是最高的。因为什么呢?因为异步确认发布,它的性能高,效率好。并且一旦消息出现丢失,他可以马上知道哪些消息丢失了,并且可以进行重新的投递。所以呢,它是通过函数回调来保证是否投递成功的。文档上呢,有一张图,这张图呢,足以说明了这个异步发异步异步啊,确认发布。消息这种模式的强大的地方。我们一起来看一下。首先,这个地方就是消息的生产者。他呢,起了个别的名字,叫什么寄件,寄快件的人当然都一样啊,发消息。
01:05
发消息之后呢,发到哪儿呢?发到这个队列中。对,发到队列中,这个队列呢,其实就是信道。他在心道当中呢,是类似于像一个map一样。每一个消息是这个Y柳值对完了,每一个K值呢,是消息的序号。它会在这个信道当中给消息进行排序号,例如排一号、二号、三号、四号、五号,为什么要这么排呢?是因为发送批量的,例如我们发送1000条儿数据。那么这1000套数据完全可以怎么呢?由于是批量发送的。不妨将1000条数据,每一条数据都编上号。编上什么号呢?编上12345,一直到1000。一旦编上号之后,哪些消息成功了,哪些消息失败了,你完全可以怎么办?完全可以根据这个号来找到哪些消息成功,哪些消息失败。
02:06
那么我们这里面这个油叫是吧,就是我们的这个MQ的一个消息实体。当他接到一号消息的时候,他就会进行一次成功的应答,这呢,成功的应答。啊,反了。图在这呢啊,图画这呢,成功的应答。表示告诉寄件人怎么的说你的消息或者你的送的寄快件,我已经成功收到了。所以就告诉人一声,成功收到了,当然了,如果没有收到呢?没有收到,也会通过另外一种渠道告诉寄件人,你的快递我没收到。也就是说,不管你收到还是没收到,作为这个,也就是说这个叫消息实体都会进行一次应答,只不过应答的情况有两种,一种叫确认应答,一种叫未确认应答。
03:00
这两种应答当中,未确认自然就是没有收到,没有收到嘛,那么确认应答就收到了呗。所以你只需要负责批量的发送啊,我发你也发,你使劲的发,发1000条数据。只要把疫情的数据发出去,将来会有它来告诉你哪些没收到,哪些收到了,你将未收到的再进行进行重新发送,将收到的啊就不做任何处理了。所以就达到了这么一个目的,而且呢,他通知你这个博通知,你不是同步通知,是义务通知,也就意味着你作为寄件人,根本就没有必要考虑成功还是失败,只要拼命的发,拼命的发就可以了。哪些快件如果出了问题,自然会有通知你出了问题,那么没出问题的也会通知你没有出问题,所以你只需要坐在家中等待就可以了。
04:01
这就是异步的。异步的意思就是我发不像刚才一样,我发一条消息就要等待别人确认。没那个必要。你就拼命的发就可以了。哪些需要确认,他们这边会稍后会通知你的。所以这个稍后指的就是意义不通知这个呢是性价比最高的,速度最快的,同时呢,消息也不会丢失。哎,这就是一张,呃,一张原理图啊,道理很简单,代码非常的难。我们接下来准备写一写这个异步通知的代码。当然了,我们肯定要进行用一个类似于map的容器来进行记录它,它呢必须要有K值,哎,要有value值,而value值的内容,K值呢是属于序号。那么代码到底怎么写才能达到异步确认发布的情况呢?我们接下来马上给同学们演示一下。
我来说两句