00:00
好,那么同学们上一讲给大家讲了这个慢消费者。快生产者他们呢,可以采用延时投递进一步提升性能,以及延时投递需要用回调方法确认异步发送,保证发送成功。好,接下来你好不容易干穿了这个一步投递以后,面试官马上要来问你,那请问你有没有在生产中做过延迟投递和定时投递?怎么样?你现在去阿里,去百度,去今日头条去面试啊。你以为真的这个面试这么简单,拿高薪这么容易?经不经得住人家这么问,你真的没有经过大厂干过,没有像杨哥这样有过大厂背景和实际工作技能的话?钻研着这些,平时积累钻研这些技术,你真的很难回答出三大投递,一步投递,延时投递,定时投递,说说你的理解啊,听都没听过,行了,你那个MQ也就是往这个上面摆点消息,然后慢慢的来处理,基本上没碰上过什么事。
01:02
好,那么就说这个延迟和定时不用讲啊,同学们。比方说。写封邮件,今天写好了,定个时间明天发。哎呀,不废话了,这种场景什么延迟和定时呢?大家都明白,好吧,我们就说一个最简单的,当初杨哥教大教大家Linux的高级命令,我们是不是讲过这么一个啊,比方说vm state、杠、N23,大家请看。什么意思啊,是不是每间隔两秒钟?出一次记录,共计出现三次啊。对不对,这种情况下是不是就是延时投递,定时投递,只不过这个就是延时和什么定时有一定时间间隔,出结果和出效果呀,那么。作用都明白了,不解释啊,那么言下之意,这个消息咱咋整?同样一个消息,我现在就想是什么间隔。
02:00
三秒钟投放多少次啊,怎么怎么怎么的,好吧,那么接下来那么请看。MQ的高级特性刚好就支持这个,你看大场面的其实就是它的高级特性,你普普通通的。真的,大家不会来找你去。高薪聘请,你还记不记得当时的时候杨哥画过一个楼梯?没问题吧?初级,中级,高级,那么现在说实话,这种初级选手现在是严重过剩,哪儿都不缺,人家要你给你面子了,一万五以下,那么这个档位,那么基本上就是16到多少。20,当然我们以一年最低的13薪来计算哈,那么这个档位,那么就是什么20K到30啊。那么希望大家呢?在中级和高级之间是吧,做一个牛A和牛C之间的人物。OK,好,那么所以说呢,辛苦一下哈,这些呢,跟着杨哥一块过来,都是些好东西,你要真的是发自内心的喜欢技术,肯钻研,你坐得住,你把这些都搞懂了,我我相信不用多给自己五年,至少你也是年薪40万以上,在你家公司做个技术经理最差了。
03:14
好,那么来吧,不废话,首先官网我就懒得来回切换,不打开了,反正都抓着图。直接说了5.4号,那么可以有一种什么非常聪明的。持久化的选项构建在消息的broker里面,那么它使得这种什么延迟和定时的调度消息的这种发送机制啊。成功,那么告诉你,如果你要把它开启,就要去到这个什么。设置这个在broker里面,要设置schedule support这个属性to to在XL配置文件里面,所以说我们待会儿要开启的话呢,第一步你要激活这个使用在XL配置文件里面开启,第二步检查你的消息属性,那么你看什么延时啊,定时啊,间隔啊,重复啊,然后呢它呢有这四大选项,那么这四个分别是什么呢?四大属性。
04:09
第一个叫延迟投递,第二个叫重复投递,第三个叫重复投递的次数long long in听懂,那么C呢,它是这个Linux Linux命令里面是不是也有个那个时间间隔这么写这么一个表达式啊,但是呢,一般哈,首先。我不在MQ里面。做这个延时和定时投递可不可以,我完全就有考Linux写。C。这么一个表达式行不行,完全可以,那么所以说这是两回事啊么?现在我们讲的是仅仅纯粹的使用我们的activity MQ怎么来做,那么现在我们常用的是前三个,因为前三个也足以满足你的什么延迟,重复和重复的时间间隔,重复的次数足够了,一般那么如果你非要用这种。C的这样一种表达式呢,那么大家呢,可以去维基百科上面去看自己翻翻墙,在这块有详细的介绍,那么由于在这儿我们不能翻墙上网,那么这我就不再展开,好,那么同学们,我们呢?
05:11
案例也是三步就OK,准确的说就两步,一步开启,第二步代码写,那么首先回到我们的是吗?Activity t MQ,那么大家搂它一眼过来,找到我们的broker,这这这这这这OK,在后面要添加这么一个属性,那么为什么要添加这个前面是不是再复习一下哈,官网是不是说了,你要要用延迟投递,定时投递的话,默认人家没开启,需要你在卡这个标签页,这干嘛?也就是说对这个MQ的整体配置啊,你要设置这么一个定时调度支持为true。突出这么一个开启激活的选项,那么所以说把这我就不写了,拷贝过来,在这个后面加入,那么来吧,同学们,我们来看看诶。
06:00
搞到这,那么我们直接弄进来,那么。粘贴妥了,这个就是个错,好,那么同学们,第一步我们呢,将其设置为错,表示我们要开启延时和定时投递,那么第二步就是偏代码级别的演示,那么老规矩哈,那么杨哥从这种模板里面的章听懂了吗?因为这些代码已经是大家写的很熟练了,我们节约时间。那么这些熟悉的我就不再一行行的敲了么,重点不是这些了,那么所以说当然了,请跟着杨格兰,那么第一步开启激活,第二个在Java代码里面要封装的辅助消息类就是schedule message,那么这个时候要干什么呢?我们做两个类,那么延时投递的生产,延时投递的消费好那么代码怎么编呢?首先。跑到这儿那么好,那么延迟投递的演示哈,那么这些呢。来吧,这些注释呢,我也把它去掉吧,那么这个,因为现在大家学到这这些应该不在话下了哈,我就不在废话那么妥了,那么OK。
07:05
OK,那么来吧兄弟们,这几行代码不介绍,那么首先根据官网上的要求,那么我们要设置这些属性,那么它呢?123前三个常要,那么前三个我都给你们设一次性讲明白,那么就是分别是什么。延迟投递的时间,重复投递的时间间隔,还有重复投递的次数,那么这三个,那么所以说我们在代码里面,对于我们的这个什么延迟投递调度的这个生产者,我们怎么写呢?在这个消息的生产这个下面,我们开始写入我们的新的相关的代码啊,老代码我就直接粘新代码,杨哥还是手敲,那么首先那么。Delay,我们呢,因为它都是long形,都是按千听懂了吧,那么每三秒这个delay是什么意思啊?兄弟们搂他一眼干嘛,Delay。延迟投递的时间,那么这个意思是不是每三秒钟来它一次啊?那么接下来第二个浪什么概念呢?
08:03
PERI。OD等于干嘛,那么三四啊,那么这个时候就是干嘛。每四秒钟重复投递的时间间隔是不是每四秒钟整一次啊,那么重复的次数呢?那么这边的话呢,Repeat number吧。那么这个repeat我就简单点吧,给我来五次啊,这么说能跟上我们兄弟们这好好理解吧,延迟三秒四秒钟整一次,总共重复五次,兄弟们OK,好理解,那么接下来这边怎么写呢?我们过来看看。那么这个时候就是我们的,你看这个是消息的正文内容,对不对,那么假设我这加个。Delete,那么就明白了,这是延时投递相关的,那么干嘛呢?那么message.set long property还记不记得我们前面讲过消息的那些消息头,消息体,消息属性,知道现在用到哪的威力了吧?那么这注意杨哥已经提醒你了,干嘛?这个类叫什么?是不是schedule message,那么过来吧,那么。
09:08
这个时候schedule message点你看amq MQ的第一个参数叫什么,Schedule是不是要delay那么好对应着,所以说我也叫delay OK,那么。接下来,那么下面这个我们叫什么呢?我们这个下面下面呢就叫什么。Period,那么这个时候是不是我们的什么东东间隔那么PD那么一样,那么第三一步,那么兄弟们这个时候。叫我们的什么呢?是不是我们的amq的什么重复的repeat这个次数,那么现在同学们,那么这个时候我们干嘛repeat就这么个次数,OK,那么好了,那么也就是说在我们的以前,我们是不是只有正文,正文就直接发送OK吧,那么现在在这个之间。加了一点。对消息做了一些细腻度的设置啊,那么干嘛?
10:01
每三秒。整听懂,然后重复五次,那么每四秒钟的间隔,然后呢,给我来三次,那么相当于这些东东就是我们这儿这个东东,那么简单的就这句话。那么345延迟投递的时间三秒钟,重复投递的时间间隔四秒钟,总共几次,五次,好,那么杨哥为了好说,就345给他配成这个,没有什么其他原因哈,那么接下来,那么兄弟们,这个激活了以后,我们是不是要给他?重启。听懂了吗?那么我们现在是不是先要把这个得重启一下,因为改的配置文件是不是要激活一下,好,那么这边呢,又要要。重复一下,那么这边我们呢,直接MQ那么。我呢,Stop一下哦,已经是stop啊,那么好,那么start一下好了,那么兄弟们,那么看看我们的home。能不能访问啊,因为重启会稍微有点慢,我暂停一下。
11:00
好,那么同学们终于哈,这个呢,经过了一点点等待的时间,他回复了,那么我们的消息起来了,那么如果一切顺利,这块就会看到我们是不是会不停的在定时延时的发消息,那么现在。严格的代码所写的,那么就是什么345那么好,那么这个时候我们呢,直接来跑一下生产者,然后来跑一下消费者。好消费者有没有对吧,那么如果一切顺利等上,你看这个时候一点时间,那么我们干嘛等他跑哈。那么这个时候延迟头顶上是不是三秒钟延迟啊,几次啊,就是间隔四秒钟,总共要有五次好诶。没有。那么这个时候哈。呃,我们来看一下哈哟,还真给杨哥闹了点小情绪是吧?好,我们先关掉,首先哈,这个呢,不会错啊那个。
12:00
消费者就跟我们以前的一样哈,同学们就完全是那个没有任何就是什么监听啊,这些不用说是消费者就是简单哈,那无非就是说消费者呢,要每干嘛有五次啊,每间隔。四秒钟的话,每延迟三秒钟以后打过来一些东洞是吧,那么。三秒钟,每次间隔四个,那么调用一次,好,那么接下来我们要来检查一下哈,那么。新的程序是不是只有这儿和这儿,那么如果说出毛病是不是,哎呀我知道了。好,同学们,不好意思啊,杨哥犯了一个小错误啊,我傻逼了,刚才我是不是不停的拷贝啊,这有个问题是什么,这是set long型的property啥意思啊,这个repeat,大家看我们这个repeat是什么型型,因为刚才我这改的顺手,我是不是这么全部拷贝啊,那么所以说这呢。我犯了一个错误,小错误,好,那么改回来,那么这应该是什么想都不用想,是不是set in。兄弟们,OK,因为这个也很简单嘛,无非就是什么配置一个配置文件重启一下,然后把新知识啊加上,我觉得自信的说一句应该没什么错了哈,那么这个时候还不知道会不会打脸哈,那么O了来同学们,我们呢,这有这个么三条那么删掉好吧,我们再重新来,那么言下支线,那么这个long long熨烫OK了吧,那么现在呢,这查出来算是第一个小问题吧,那么这。
13:24
声差。那么这。消费好,那么这个时候消费者出来,OK,那么。看看四秒钟OK,有了吧,那么我就觉得吧是吧,还是自信的说句逻辑上应该没什么问题,那么大家请看,那么延迟三秒是吧,每四秒钟发一次,总共重复五次,那么这就是345 OK,那么这个我们呢就关掉,没什么不等了,那么这个呢,就是我们的什么定投类型的配置代码,也是所有的MQ的异步延时定时三头,那么面试中经常被考到,就是看你实际的工程经验。
14:03
好,那么同学们这个建议大家要掌握。
我来说两句