00:00
我们接下来学习一下如何使用优先级队列啊。优先级队列呢,首先可以在页面上。添加我们看一下。首先呢,来到队列这边,你可以新建一个队列啊,队列的名字呢,你任选这都不重点,重点就是在参数这一环节。你要点击它。这里面让你设置最大优先级,也就意味着你得准备一个优先级的队列,你点一下试试啊,点一下。这个时候呢,你可以对这个队列设置最大优先级,当然了,同学们都知道优先级是零到。255。你任意取之。我们一般在企业上班,强烈建议设成十,也就是说只能允许他用零到十之间的数,不要用太大,因为用太大呢,对我们的电脑的这个性能的CPU。内存有点浪费,有点高。因为同学们都知道,最后他肯定是要进行排序的,你看这不写这不写了吗?他最后呢,是要进行排序的。
01:09
那如果要进行排序的话,那我们。这个就浪费性能了,对吧,所以我们。还是不要排序完了再往下呢,排序尽量短一点是吧,所以我们写十。当然这是业务页面来进行,呃,使用,我们当然在企业上班,不可能用页面是吧?肯定用代码,那代码怎么用呢?代码是这么写的,首先呢,你要准备一个代码,是设置一个队列,哎,声明一个队列它的最大优先级是多少呢?十。设置这个参数。这是第一步啊,第二步呢,你要在发消息的时候,设置消息的优先级为五,当然这五呢,一定要在这个队列的指定范围之内。例如队列要求你最大是十。你能写11吗?那不可能写11对吧?只能写零到十当中的一个值来进行排序。
02:05
所以写个五啊,写个六啊都是可以的。这里面需要一个注意事项,就是我们这里面注意事项就是队列需要设置优先级,同时消息也必须设置优先级,只有这两个都设置了,才能进行优先级排序,而且消费者需要在等待消息已经发送到队列当中才去消费,因为什么?因为才有机会对消消息进行排序嘛。所以这就要求我们一会儿发消息的时候,记住一定要先发消息。什么意思?就是订单催缴发消息,例如有多少消息呢?有100个消息。你要把这100个消息提前发到这个MQ当中。此时,不要让消费者去消费。将100个消息全都放到队列当中来,你再让他消费。
03:01
否则。你想他发一个,他消费一个,发一个消费一个,发一个消费一个,那么100个最终发完了,同时也消费完了,有顺序吗。没有水对,因为你发一个就被消费掉了,他哪有后面的消息做对比啊,没有消息做对比,哪来的排序啊。是吧?所以应该生产者先把消息发到队列当中。之后再由。消费者去消费。再说一遍,应该由生产者先把消息全都发到队列当中,来完再由消费者去消费,这样消费者就会对消息先进行排序,排完序再去消费。好,那我们写一下代码是怎么写的。首先呢,我们来到我们之前曾经写过的代码,我们不从头写了。直接写代码上看生产者发消息。
04:01
怎么发呢?在发之前先要声明队列,那么这个队列呢?是一个没有参数的队列,同学们都知道,我们应该设置一个有参数的队列,而且参数是。设置一个最大优先级来写一下。那这个参数呢,我们看一下应该是一个map。把这map呢粘过来放到上面找个位置或者放这儿也行啊。我们来一个哈。Map完了,这map的里面。只有一个值。Put。谁呢?就是优先级,咱们可以粘一下页面上就是这个值啊,把它写上最大优先级只能要求十对吧,一定要记住它的官方啊,允许。是零杠255之间。完了,我们此处。设置了一个十是吧,设置十,那么现在现在是多少了,现在是允许优先。
05:05
及。的范围为零到十了。哎,不要设太大啊,不要设置过大,因为浪费。内存啊,浪费CPU和内存啊,与。好,就这么简单的介绍一下,说明一下啊。完了之后,紧接着咱们把这个参数填到里面去。填到里面去。完,我们发消息。为了能够体验出这个效果,你只发一个消息是没办法体验的是吧,所以呢,我们本次打算发一堆消息,所以在这个位置。Four。发多少?十条吧,行吧,从一开始发一直发到十。消息本身呢,我们也是像原来一样写是吧,叫info完了呢,再加上一个I消息内容。完了,这个时候你判断一下,如果A呢,正好等于五了。
06:05
哎,等等于五了,那这个五呢,优先级要高一些。其他优先级低一些,来发一下试试。拿过来。发完之后呢,把这个对,把它呢,这个参数设置设置啊,尤其是到了五了,那我们优先级就要写一下是吧,构建一个优先级。构建优先级的内容呢,我们在这儿呢,你看上方告诉你代码。消息优先级是这么写的。对吧,那你就照着写呗。是这意思吧,所以我们就照着写。叫am。P一点。第二。QP是QP点。Property,对,它是property完了,又一个amqp.P忒完了呢,咱们换个行,方便查看代码,点上build构建。
07:00
点上这个优先优先级呢,优先级是五,设置个五是吧,完再进行构建。拿到了这个property完再把property放里面。对吧,哎,就这个ID为五的进行设置这个优先级,其他的反之艾斯。其他不设置,所以其他正常走正常发布,哎,这个位置属性呢,不设置设置浪子是吧,完了下面这个就注释掉了。完了呢,这个呢,表示消息发送。成功。对吧,完之后紧接着我们发一下事实啊。完了这块呢,也可以改成持久化是吧,哎,改持久化。行了。咱们现在先看一眼,有没有这个hello,这个队列。没有哈队列啊,一定要记住,如果哈队列已经存在了,你在创建的时候有可能会报错,因为什么?因为你对这哈队列进行啊更改属性了。对吧,所以我们执行一下。好,你看发送完成,现在目前看一眼有没有你看来了啊哈,队列当中哈。
08:05
带有一个持久化,并且还带有一个优先级,正好是优先级单词的头三个字母表示是一个优先级队列里面有几个消息,有十个。对十个消息咱们再打印一下。取出来看一眼是多少?我们的iPhone不是iPhone啊,是五啊。应该排在第一个位置,你看是不是排在第一个位置。对吧,O5它的优先级是五,比别人都要高,别人没有设置。别人没有设置就不如设置优先级的高,对不对?哎,默认呢,当不设置时,优先级是最低的。只要你设置了,那么优先级就高,那么高的情况下,在比对数字越大,优先级反倒越大,最大上限多少十对?看到了吧,这个优先级高的先被消费了。
我来说两句