00:02
好呃,下面我们接着来啊,我们看这里边第二步是什么投递延迟消息。呃,博客内部啊,有一个延迟消息服务类。啊,有这样一个服务类,其实这个服务类是谁呀。就这啊,大家看,就这个叫schedule service就差。啊。服务类写上吧。呃,这个这个这个。是该。Schedule。Message。啊,其实这个你你知道就行了啊,那图上有给大家写出来,那么会消费它里边的消息。什么叫消费太平消息啊,也就是按照每条消息的投递时间。将消将延迟消息投递到目标,目标就是我们这个消息原本topic啊,投递到目标里。
01:02
不过在拖地之前,会从。Commit log里边啊,把原来的写入的消息再次读出,你原来一开始他。他是不是要写一个把消息写到它里边,写到它里边以后就消息已经写到这儿了。停到这儿以后。原来的消息啊,最深的消息,它它是放在这个log里边的。对吧,已经放进去了啊,这已经放进去了。呃,不过在投敌之前会会从呃这个里边将原来写有的消息再次给它读出来是吧,并将原来的你原来那个消息里边,它设置的有延迟等级啊,你像我们这儿设置延迟等级是三的,你现在再次投递。那你不能还有啊,所以把这个烟等你给它设成零。啊,给他声明啊,即原来消息变为一条啊不延迟的普通消息,然后再次将消息投递到topic里边。
02:07
再次给他逃了,逃了。呃,这个啊,呃,虽然我们这个课程里边不对热卡Q的源码进行解析啊,但是老雷给大家也想讲的更深入一些。呃,我简单把这里面东西给大家说说啊,就在这个就我们这个类啊延迟服务。这个在这个里,这个里面啊。啊,这个东西是吧,呃。是。嗯。这个东西啊,呃,这样说吧,他在我们的。启动时。啊,会创建。呃,并启动一个什么一个定时器啊,你看。
03:00
就是我们一开始就说了啊,一开始就什么是呃,什么是延迟消息说呃可以实现定时任务功能,但无需。使用定时器,为什么它给我们它里边用了定时器了啊,那启动一个定时器开门。啊,用于干嘛啊执行。相应的呃,定时任务。然后系统呢,会根据延时呃,这个等级啊,会根据这个延时等级的。个数,你注意是个数,你有几个延迟的,我不管你是哪个级别的,是个数要定义。相应数量。呃,这个这个timer task。就是我们的这个这个定时任务啊是吧,然后每个呃。
04:01
Timer。Task。呃,负责一个。嗯。颜值啊,这个这个这个。严。延迟,呃,等级。小。系的消费与。那我我这里不是有。有这个定时任务了吧。是吧,然后呢,我们的每个定时任务啊,它都会检测。我们这个队列。每个。Ask啊。都会检测检测这个,呃。它应该是相应啊,相应Q。队列相应Q。队列。的第一条消息。
05:01
是否?到期你注意啊,检测的是第一条消息。其实说白了,检测第一条消息是否到期,其实就是查是不是这个我们的消息所引单元里边是不是这个message t tag code,就这个检测它,因为它里边放的是什么,放的是我们的投递时间。对吧,他这放的是我们的头顶时间,要检测它。那为什么就检测它呢?大家想一下,刚才我们在这儿已经给大家说过了,它里面实际上是排序的,排好序的,这个排序按照投递时间是不是排好序的。对不对,投递实际上实际上就是我们说的这个博克啊,他被发送到博克的这个时间,它是排好序的,也就是说只要第一条。没有到期。是吧,呃,若第一条消息,诶到期。啊啊的后面的,呃,所有消息。
06:03
更不会。到期。对吧。呃,因因为他因为呃消息是按照啊,按照这个投递时间。排序。当了。呃,如果第一条消息啊,第一条消息啊,到到期了,那么。啊。将该消息,呃,这个这个这个。投递,投递到我们的目标。Public。哎,那这是什么?这就是我们的什么。消费。消费。消息对吧,这就是消费这条消息。呃,消息投递出去以后,然后就相当于完成了哪一步了啊。相当于完成了。
07:01
现在完成了,我们把消息抛给他了。你注意消息投给他了,就相当于一条普通消息了,那你后续该怎么做就怎么做就可以了,所以延迟消息第第第三步啊,将消息重新写入到延迟消息服务类。啊,就是他延迟消息服务类。将。延迟消息再次发送给我们的,然后并再次形成新的消息索引条目,你注意。这个消息条目现在也变了。当然这个是从新人,你只要一投递,它自动会计算的,不用我们管是吧,它它会形成新的新的这次人,这这里边放的真正的是太。对吧,然后很好的相应的。对不对,所以我说了这个啊,其实就是一次普通的消息发送,但它又不普通。
08:00
不普通的,他的消息的生产者producer是谁?是谁,是他?对不对,所以啊,呃。呃,这其实其其实就。就是一次。普通消息。发型。这次,呃,只不过这次的消息。说user是。我们的延迟。消息。五类。就就这个东西是吧。就是它啊,那么这个其实就就是我们延迟消息实现它这个原理,重新再看一下,大家看是不是我现在就把消息发给他啊,这边记把这个消息先记录下来了。是吧,他的只要你消息写到了computer lock,他消息的所有的东西都写到它里边是吧,然后呢,呃,我。
09:05
在这边创建相应的是不是这个主题啊呃。相应的这个Q。是吧,当然这个Q和谁有关系,和你呃,和你传递消息的这个延迟等级是有关系的,对吧,然后我这里边有相应的。是吧,它里边有相应的他是吧,我到到时间了,我就把你这个消息重新发送给他,这一次发送过来以后就成一次普通的消息,然后按照普通消息进行处理就可以了。对不对,好。
我来说两句