00:00
同学们,我们讲一下MQ的优先级对立啊。先说一说优先级队列是个什么使用场景,就是什么情况下会用到优先级队列呢?是这么一个场景,叫订单催付场景。就是说我们的客户在天猫上下的订单。淘宝呢,会及时将订单推送给我们,注意淘宝将订单推送给我们是是什么方式啊,是发一条短信推送。功能简单不简单,但是由于推送的订单非常的多,他会怎么的,他会按照大客户小客户来对待。如果是大客户和小客户都存在的情况下,还优先推大客户。所以比如苹果、小米这样的大商家。一年起码能给我们创造很大的利润。当然我们指的是天猫网。
01:00
所以理应当然,理理理所当然的是吧,他们的订单应该必须优先处理。所以我们做我们曾经后端使用系统当中使用red来存存放的叫什么定时轮询,这个功能同学们都知道是吧,就是一个例子的,做了一个简简单单的消息队列。但是这个队列呢,并不能实现优先级的场景。所以一旦大量订单产生的时候,应该采用。Q,进行改造和优化,如果发现是大客户的订单,马上给一个相对比较高的优先级。否则是默认优先级。什么意思呢,我们来。瞄眼啊,画一张图简单说明一下啊。那我们说一说这个定这个优先级指的意思就是这意思就是这。叫订单催是吧,催付。
02:01
就是催谁呢?催用户付钱是吧,催付付钱时候其实发给用户的是一个一个短信是吧,实际上用的是这个叫。呃,MQ。发一条这呢消费者是吧,这块是消费者。消费者干什么呢?这是发短信,其实再往下呢,就应该去连接一个发短信的系统啊,那我们这么写吧,发短信。那么问题出在哪儿呢?出在这上?这个位置。这个位置正常情况下呢,他发订单催缴的时候,其实实际上发的消息同学们都知道是这么发的是吧,比如六号消息。对吧,把逗号隔开。这个叫九号消息。逗号隔开。三号消息。写这边啊,三号消息完,以此类推,在逗号隔开七号消息,所以它是有这么一个顺序的,叫六九,它是先进先出的,一定要记住。
03:03
先进的是六号先进的。所以他应该先被消费。是这个道理吧,但是。本次优先级是可以进行排队的。例如,如果你本次用的是优先级。队列。那么消费者尤其注意是谁?是消费者在获取优先级队列消息的时候,是先把他们进行排了队,排完队再获取的进行消息。那也就意味着他们每一个数据下方都有个小标记。例如。它的标记。他,例如他的优先级是五。对,完了呢,这九的消息的预算集是。四。对,三的优先级是七。七的优先级是三对,所以按照这个优先级来情况,谁应该先别消费啊,这里再说一说优先级呢,这个队列当中的这个长度数量啊,是零。
04:07
到255。区间范围是零到255,呃,越大。越优先。越优先执行。啊,越优先被消费对吧,所以说他应该是有个范围的,不能超过零到255,因为一旦超过255就报错了,所以越大越优先执行,如果按照这个道理来看。谁应该被执行啊,正常情况下应该第一个第六号,六号消息应该先被消费,但是很可惜,消费者肯定会按照后面这个5473进行重新排序。谁排前面七排前。是吧,所以这个排序之后怎么排,这么排相当于把三七呢,三七给它剪切排在了前面。
05:00
所以他先消费的是几号,三号,把三号先消费完,再消费六号,再消费九号,再消费七号,你看它的排序顺序是由小到大,越大越先执行嘛。所以每一个消息本身,它还有一个对,还有一个数字啊,优先级的一个数字。越大越越消费,消费完了这是谁排呢?是消费者连接过来之后给他排,排好排完了再进行消费。就这么一个情况。啊,这是里面的一个原理啊,刚才我们说的这个应用场景,就是这个叫订单催付的一个场景,它是按照大客户小客户啊,他肯定是把大客户的数据呢设置大一点。小客户呢,数据设置小一点,所以大客户先被消费掉发短信。好,这就是咱们优先级的一个使用情况。
我来说两句