00:00
同学们,我们先讲第一个,单个发布确认。对先讲第一个单个发布确认。那我们也就什么叫单个发布确认呢,就是发一条,我必须确认一条。是同步确认,注意是同步的,就是你发一条,我就等你的确认信息,你如果不给我确认信息,我就不给你发第二条。特别像交易是吧,哎,一手交钱一手交货。你不给我货,我也不给你钱。完也不要想着下次再交易了,因为这次交易都没完成,我下次也不可能跟你交易了,所以单个确认发布是同步的,发一条确认一次。当然了,缺点也很明显,就是发布速度特别的慢,为什么呢?因为他每次发一条就要等待别人确认,那么第二条还发不发了呢?那就不发了呗。那么第二条什么时候发呢?当然是等到第一条发布完之后再发第二条,所以发布速度特别的慢。
01:06
那么到底有多慢,你怎么说就慢呢?所以我们要用代码实现一下,实现完之后。打印消耗的时间对打印消耗的时间,从而来确定是不是慢。好,我们用代码写一下。首先将之前代码呢,我们全部都关闭啊,完之后呢,服务都关闭之后呢,打开一个新的,这是第四个了是吧,我们在创建第四个包叫。For对吧,第四个完了之后再写我们的本次叫发布确认是吧,发布确认就。对,确认完了呢。消息来message确认消息,所以名字叫这个名字了,这名字是自己自定义的啊,想怎么写怎么写了。完了这个类的作用。就是来。验证发布。
02:01
确认。发布确认。模式对吧。这种方式有几种呢?第一种叫单个。确认模式。对,第二个呢是批量。确认模式。批量。第三个呢,是异步。P对异步批量。群。对三种模式,我们分别验证他们的什么呢?用的时间对用的。使用的时间。来比较对。哪个?哪种?确认方式。是最好的。那么为了确认三种呢,我们一定要怎么办呢?把三种都写一遍对吧?都写一遍啊,要写三种。完三种的用时呢,我们到时候确认一下之后呢,再填在这个后面是吧,例如他用多少时长时间,他用多长时间完,还有第三个用多长时间,我们一一的去写一下。
03:10
好,首先呢,我们必须得有一个main函数是吧,哎。内函数呢,要调取几个方法呢?三个方法,第一个方法就是要调取单个确认。完了,第二个要调取批量确认。第三个呢,要调取异步确认,从而进行比对。哪个性能更好?那么这就意味着有几个方法呀,有三个方法,所以我们先写第一个啊,单个群,那么写在这里吧。第一个。单个确认。单个确认的代码怎么写呢?我们随便写一个写一个方法啊,就是诶PA了。写个静态方法吧,方便方便方便调取啊。为什么方便调取呢?因为你写成静态的了,咱们上面就可以直接去调取,所以呢,咱们void是吧,来一个叫。
04:05
Publish publish啊,发布消息。完了单个的是吧,单个的话呢,我们就叫in的是吧,In DV。对,就他单个的。这是英文单词啊,同学们要是不认识呢?没有关系啊,你就当没有看见也是可以的。无非就是一个方法的名字啊,就是你可以自己自定义去写啊,重点内容不在这个方法名上。要重点确定,确定的是单个确认到底耗时是多久的,来我们写一写,首先第一步呢,肯定是获取,这个叫信道啊,这个是毋庸置疑的。第二步呢,我们肯定是要呃声明一个队列啊,因为我们都已经写很多遍了,是吧,啊队列的一个声明。本次队列名呢,我们打算随机获取,不再去定义什么一个固定的名字了,好吧,不固定的名字了,所以呢,我们用一个叫呃,UUID生成一个队列的名称。
05:07
UUID长度呢,同学们都知道是36位的长度是吧,那么我们就叫36的长度吧,哎,就它。这个是对应的名称完,接下来声明队列用的是信道进行队列的啊,声明。将名字填里面。将后面的都去掉是吧,例如不持久化哎,例如啊不共享,例如不进行自动删除完,其他数值呢,我们也不填了。这些呢,我们就不再去填写了。为什么呢?因为我们本次测试的是发布确认啊,不研究持久化的问题,好吧,不研究持久化,那么写上也行,没问题啊,改成持久化,这都是没有问题的。反正再往下呢,我们是这个再往下写。大家写啊,首先呢,来。记录时间,一定要记录一个开始的时间。
06:00
要不然谁知道快与慢是。所以开始时间是多少。我们呢,可以获取毫秒值啊,用毫秒值进行计算。所以呢,我们就开始写,当然了,在写之前呢,你得先把这个叫呃开启。开启确认模式是吧,这个确认模式。确认。开启发布确认。完了呢,你得用这个新道直接调取它,哎,这就开启了。开启完之后记录一下时间啊,我们用这个叫system系统级的时间吧。获取当前的毫秒值。对,这是当前时间,我们加一个begin吧,就表示这是开始的一个时间,接下来。开始发消息。批量发啊,我们每次发多少呢?发1000吧,是吧,以1000为单位,不要发太多1000。所以呢,我们可以在上面弄一个常量。就是批量。
07:01
发消息的。个数对吧,可以完了呢写一下。完了呢,个数呢,我们应该用这个int类型是吧,完了来一个叫啊。写个message下划线。对。多少呢,1000。你可以写100啊,一百一千都行啊,我们只是在以1000为单位在进行时间的测试啊,我们把它大写。就是这么写下。Count它这个爆波浪线了,那么count是不是。写错了是吧,对。它它这个认识单词的count。反正的把他。转成大写。哎,这就没毛病,看看。对,完了拿它进行负循环遍历,遍历1000遍,也就是说批量的发消息。注意啊,发消息是批量的啊,我们本次测的不是批量发消息是。发一条确认一次,发一条确认一次,所以呃,大量的发消息来用这个叫。
08:05
它点上。循环对循环开始,从零开始循是吧,循1000遍。寻一仙变之后呢,紧接着我们发的消息呢,每一次这个消息发起呢,就发这个零一二三都行啊,也就是说我们的消息内容。也就不用再去编辑了,就是I就可以,当然了,给它转成字符串的话,加一个空串,转成了一个字符串消息。完之后再往下呢,开始发消息。新的就开始了。信道呢,用这个叫基本的发消息。Basic publish发消息完了呢,我们队列依然空着。不是队列空着,是交换机空着,完了我们的队列名称写里面,完了任何的参数呢,我们也不填,当然了,你要填一个持久化也没有问题啊,完了再来一个消息的二进制。对,我们就不加138了,因为我们的消息是数字,所以不会出现乱码。
09:01
发消息之后呢,紧接着我们进行。确认。就要你发一次,我就赶紧确认,对。这属于单个。消息就马上。进行发布确认。那么怎么确认呢?拿着这个消,拿这个信道直接调取等候。确认。等候的结果。就是一个flag是吧,哎,就是一个标记。这个标记如果是处,那就是成功了。所以。加个判断flag,如果是true,你就可以打印一句话。什么话呢,叫消息。发送成功。消息发送成功了。那么一旦这是发一个啊,那你看发一个真的发一个确认一个。完打印一句话,完了循环下一个,再发一次,再确认一个,再打印一句话。
10:03
哎,打印多少遍呢?打印1000遍完了,这1000遍用完之后,接下来把上面的时间拿过来,这个就该结束时间了。那是开时间结束时间粘过来。完了呢,把结束时间叫and是吧,结束拿过来。那么开始时间和节奏时间的一个差值,例如节奏时间减去开始时间,不就是之间的用时吗?对吧,我们这种就是1000条数据,在单个消息马上进行发布确认的情况下,到底用时是多久了,所以接下来我们打印一下这个用时啊。打印要发布啊发布。再写上发布多少条,哎,你得加上。这个message,这个这个常量。这个常量我们是大写的my message常量,发布1000条。
11:01
这写着1000个。单独。确认。消息逗号。逗号,哎,耗时。耗时多久啊,耗时的加上啊,剩余多久我们不知道是吧,我们只能用这个结束的时间减去。开始时间,哎,写错了是吧,减去。开始减。完了之间完了再加上单位是MS毫秒。它俩之间简直就是毫秒值啊,因为这就是毫秒相减嘛,是吧。所以通过毫秒时就可以确定耗时是多久了。来我们先运行一波看一看啊,直接把这个方法呢,放到这里进行运行。对吧,运行是不行的,那么我们只能用这个。类名啊,点上这个方法名啊,这这这可以。我看这可以吗?
12:00
才可以,他准备抛出异常,那我们抛出一下啊,抛出异常。对,抛出好,那么一旦你执行内函数去调用这个方法,那么自然就会打印时间,我们来看一下时间是多久。耗时来把这个粘过来啊。这些消息呢,都确认成功了1000条啊,所以你把这段呢,一粘贴完了,把这个时间往这一放。时间一放啊,发布了1000条单独确认消息,耗时722毫秒。对,所以呢,我们就求出了单个确认。发这种1000条到底用时多久?
我来说两句