RabbitMQ消息该如何插队

RabbitMQ 消息该如何插队,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联公司于2013年开始,先为安仁等服务建站,安仁等地企业,进行企业商务咨询服务。为安仁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

消息中间件在各个大厂都有使用,算是现在面试过程中必问的一个知识点了。群里一直同意和谐社会,拒绝插队。但是在特殊情况下是可以插队的,比如医院里的急诊等。那么 RabbitMQ 消息该如何插队呢? 

这个问题很简单,RabbitMQ 有优先队列。所以,RabbitMQ 消息队列优先级就可以用来解决“插队”问题。

生产者生成消息打到交换机里面(如果没有声明交换机,会打到 default exchange 里面),交换机绑定一个或多个队列,消息进入队列里面,消费者一直在监听队列,发现队列里面有消息就开始消费,这里就是一个消息传递的过程,queue 是一个栈队列,队列是先进先出的,就是说消息来了依次排队,一个队列并不能实现消息的插队和优先推送的功能。但是如果说我们的多个队列有不同的优先级,不同优先级的消息通过 roatingkey 进入不同的队列,优先级高的队列消息被优先消费,这样也能形成一个相对意义上的优先级,所以说这里不是消息的优先级而是队列的优先级。

RabbitMQ 的消息是不能插队的,但是它提供的有优先队列。插队就是要靠高优先级的队列来实现。

在 RabbitMQ 中,设置消息的优先级一共有 2 个步骤:设置队列的 x-max-priority 参数;设置消息的 Priority 参数。

RabbitMQ 消息该如何插队

就这么简单,做完这个之后就可以验证优先级队列的作用。当然,需要注意的是,在消费端速度大于生产端速度,且 broker 中没有消息堆积的话,对发送的消息设置优先级也没什么实际意义,因为发送端刚发送完一条消息就被消费端消费了,那么就相当于 broker 至多只有一条消息,那么对于单条消息来说优先级是没有什么意义的。

看完上述内容,你们掌握RabbitMQ 消息该如何插队的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网站栏目:RabbitMQ消息该如何插队
路径分享:http://azwzsj.com/article/iidigp.html