00:00
来,同学们,我们把这个异步确认发布的代码呢,咱们书写一下。书写一下好。打开咱们的开发工具。来到最下方。对吧,来到最下方,我们写一下我们的确认啊。我们来写。首先呢,我们到这个位置。来一个叫,这叫异步。一步。发布。确认对完了,把这个方法的名字咱们抄袭一下啊,Static完V完了呢,方法名字应该叫publish是吧,Message。My message完之后呢,紧接着来一个呃,E步是吧,这个单词念E步吧,NC吧,NC这个单词念E步对。完之后呢,紧接着抛出异常。好。这个就是异步发布确认。上方的代码呢,应该是一模一样。
01:02
哪些代码呢,就跟刚才一样,例如你调取工具类呀,来一个队列,来一个队列声明啊,是吧,来进行发布确认呢,甚至是开始时间呢,这些代码应该是通通都一致的,因为这些都是边缘代码,都不是核心代码。同时呢,为了记录时间,你也得有个结束的时间,诶之间呢还得进行相减,最终呢,发布多少条,注意这不是批量发布了,应该叫异步是吧?哎,异步确认,异步发布确认消息耗时多久?中间这个位置,哎,就是我们马上要进行异步发送的核心代码。来咱们写一下核心代码呢,依然是要进行啊,要进行我们的消息的。循环便利。这是毋庸置疑的。这就是批量发送是吧,继续。P。批量。
02:00
发送。消息,但是要求是异步回调,也就意味着不要自己去手动等待确认了,那么我们先发消息啊,先不说那么多字符串,Message还是老样子是吧?哎,这个叫改一下名是吧,叫消息完之后呢,再加上I,这都行啊,消息几消息几是吧,完了开始发。通过什么发呢?通过信到点上发布。完了呢,咱们把交换机也不写,再把队列名称填里,完了参数也不写,完了再来一个message,再获取它的二进制。发消息。完了之前咱们发消息这个位置就要进行是吧,发布的一个确认了。对,发布的这个叫确认。你要是这么写,代码,一定又回到之前单个确认或者是批量确认那里。完了又变成什么同步的,就是说我发一条我就要等待确认,发一条等待确认,但是我们不是说好了吗,是异步的,不再进行同步了,所以我们不应该在这个位置去确认。
03:11
对吧,就让他发你发吧,你发多少,你发1000条,那就发,你将1000条全发完,至于确认的事儿,不由你来完成,由什么来完成啊?由。这边图上的谁说的,由图上的叫做broke,他来完成。他会通过这个信道返回来通知你这个。会计,会计的人。那也就意味着你不用管,你只负责在家里等着,他会通知你。那么也就意味着你在家等着,什么意思呢?就是表示你要写一个监听器,对,在发消息之前你就准备出一个。消息的。监听器。来监听。
04:00
对什么呢?哎,哪些消息成功了。对,哪些消息失败了?对,从而就知道哪些消息需要重发,哪些消息不需要重发。监听器呢,要先准备出来,因为你要是写在下面,有可能你发消息的时候正在发的过程当中,如果通知你了,你是收不到的,对吧,因为你必须发完1000条消息,你才会处罚监听器,所以希望将监听器放在前面。就是在我没有发的时候,监听器就已经准备出来了。那在我发的过程当中,就有可能随时监听到哪些消息成功,哪些消息失败。对吧,所以我们的监听器应该放在前面。由新到来完成啊,新到的添加一个确认的监听器。Confirm确认。
05:00
监听器。监听器呢,分为单参和多参两参是吧,单参就是只监听成功了的。你呢,这个呢是既可以监听成功了的,也可以监听失败。对吧,你看这个no ack嘛表示呃没有确认对吧,AC嘛表示已经确认成功的,所以这个表示成功,这个表失败,所以强烈建议用两餐构造两餐方法。这样呢,一个是监听成功的,一个是监听失败。对吧,那么好。先定两个。肩颈两个的话,这就意味着你要写两个接口。对,因为这个都是接口,你看啊,你打开它是函数式接口。这个时间类都没写呢,需要你自己亲自来写。同时监听失败的,失败的这个对他也需要你自己来写。也是需要你来写,所以怎么办呢?所以我们就自己写一下吧。
06:03
怎么写,这么写,首先你把它啊,把它两个都粘出来啊,它俩作为接口嘛,我们势必要写拉姆达斯表达式了。对,有人发音是拉布达。其实是拉姆达斯啊,完了之后呢,紧接着我们这两个放在哎两行上,对这个逗号就不要了。完了进行。拉布达的拉布达斯的表达式的书写,我们来看一下。我们写的时候呢,完全直接复制这个括号就可以,没有必要自己写。对吧,因为直接一写完之后,那泛型不要了啊,类型不要了是吧,完了之后把类型都不要了。参数流了。两个参数。完了呢,下面再写一个箭头,哎,再写一个落地大括号,再写一个分号。这个就是这个写上啊。这个写上叫。消息。消息。
07:00
确认成功。毁掉。函数是吧,回调方法或者回调的函数。再往下呢,这个这个还没写完啊,这个没写完,我们抄袭一下继续啊,把它粘过来。应该他两个是一模一样的吧,一模一样,所以直接就呃复制一下。来到这里一粘啊,等号没粘啊。所以这个呢,咱们说一下这个表示消息确认失败,回调函数。这是失败的。完你把它两个放到里面,既监听成功的,哎,又监听失败。如果你不想监听,你可以写个囊纸,例如你说成功的,我就不监听了,我这只监听失败,那没问题啊,一点问题没有。我们代码呢,最好写全是吧,因为你后期是可以改的,我们成功的也监听,失败的也监听。这就达到了一个监听的目的,而这个监听注意是异步的。
08:03
义务统治。好。再往下呢,我们写一写下面啊,我们这块呢,给同学们打一个注释。说一说这块啊,这个第一个参数表示。坚定什么?兼精,成功小学吧,兼精。哪条消息成功了,哎,这这个是。第二个写着哪些消息失败了,应该是监听哪些消息失败了。这么两个。对。好,那么我们接下来再把上面弥补一下啊。就是你确认成功了,那你是不是得记录一下啊,你确认失败了,是不是也得记录一下啊,对,你得记录一下,那么确认失败的,你要进行消息的重发,当然你不着不着急重发,你至少得把它记录下来。记录下来,方便后期进行业务的处理,例如没有成功的怎么处理啊,当然了,这个我们可以再再研究是吧,就再想嘛,只要你能接到未处理的,不就达到我们的目的了嘛,对吧?所以我们可以呃打印一下。
09:11
对,打印一下什么呢?这个叫未,这叫未确认,写上啊未确认的消息。是谁呢?这个消息的这个编号,这个是这是它那个什么,这是它那个编号,对,就是咱们图上上方的12345这个标识消息的标识。好,咱们说一说。这两个参数是吧。第一个参数叫消息的。标识。标记啊,第二个参数呢,是问你是否是批量确认啊,是否为批量。就这么两个意思啊。到此呢,我们也就差不多完成了,再把上面这个打印一下啊,就例如这个叫确认的消息的编号。
10:05
对吧,哎,我们就可以完成。我们可以运行一下试试啊,看看这效果怎么样。所以呢,我们首先是到上面,为了不影响这个时间是吧,浪费时间把它把它注释掉。完之后呢,调取我们当前的类。直接调取,这个叫义务。用时多久是吧,所以我们运行一下。好打印的内容当中,呃,都是消息的内容。这个由于是异不通知你看。所以他先将消息打完了,在这儿呢,这个地方呢,才接到了我们的。内容的时间。发布的时间多久啊?发布1000个异步发布消息。耗时62毫秒,对,要比之前所有的例如单个确认,批量确认都要省时间是吧?通过这个时间就可以看出非常节省时间。
我来说两句