温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们,我们上节课呢,已经完成了这个叫延迟队列的代码的实现。完了,我们也看到了真实的一个场景和效果,我们的代码呢,也实现了我们的这个延迟队列啊,想延迟十秒呢就延迟十秒,想延迟40秒呢就延迟40秒,哎,中间的间隔呢,是完全没有问题的。那么,但是这里面有一个小小的不足之处。哪里不足呢?在这儿呢?这个你看如果这样使用的话。岂不是每增加一个新的时间需求,就要新增一个队列?什么意思呢?就是说如果有一天我们需要延迟一个小时。那现在。这个队列是不满足的,因为我们总共就两个队列,其中一个队列是延迟十秒钟,另外一个队列是延迟40秒钟,但是呢,我们将来有一天有可能要求延迟一个小时,那么这一个小时怎么办呢?
01:05
难道在为这一个小时创建一个延迟队列吗?啊,一个时间一个队列,那一个小时又一个队列,那如果以后还有很多需求,那么面对于无数种需求的情况下。你会增加无数个队列来满足这个需求吗?显然是不能的。我们不可能为了需求而增加队列,我们应该写一个适合于所有需求的队列。是吧,所以呢,我们应该对这个延迟队列进行优化。那么优化的架构图,你看代码架构图就出来了。怎么优化呢?就在我们之前的这个基础之上增加一个QC。增加QC的目的就是这个QC不再设置过期时间了。像之前的队列设置的是十秒钟,这个队列设置的是40秒,那么这个队列设多久呢?
02:03
应该不设置,对设置一个没有时间。那么没有时间怎么进行延迟呢?这个时间完全可以由生产者在发消息的时候。再指定。因为生产者发消息他是根据需求来的,我们需要一个小时,他自然就会发一个小时,如果我们需要40分钟,那就发40分钟,而不管你发多长时间,我们这个QC。它都是适合的。你发多久,我QC就给你延迟多久。就不用在创建新的队列了,像这两个队列,哎,创建的就不是非常有一定的局限性,而这个队列。可以适用于任何世界,所以呢,这个队列是一个通用的队列。我们就应该写一个通用的队列来做延迟队列。
03:01
这样呢,就不用创建更多的队列来适应不同的需求,不同的时间了。那么这个代码应该怎么写才能达到这个效果呢?好,我们接下来写一下。
我来说两句