码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ学习(公平派遣)

时间:2017-12-27 18:15:52      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:img   iter   调度   als   关注   方法   com   code   channel   

您可能已经注意到调度仍然不能像我们想要的那样正常工作。例如在有两个工人的情况下,当所有奇怪的信息都很重,甚至信息很轻时,一个工作人员就会一直很忙,而另一个工人几乎不会做任何工作。那么,RabbitMQ不知道任何关于这个,并将仍然均匀地发送消息。

发生这种情况是因为RabbitMQ只在消息进入队列时调度消息。它没有考虑消费者未确认消息的数量。它只是盲目地把第n条消息分发给第n个消费者。

技术分享图片

为了改变这种行为,我们可以使用basicQos方法和 prefetchCount = 1设置。这告诉RabbitMQ一次不能给一个工作者多个消息。或者换句话说,不要向工作人员发送新消息,直到处理并确认了前一个消息。相反,它会将其分派给下一个还不忙的工作人员。

我们可以使用 channel.BasicQos(0, 1, false); 来规定,它是在消费者那里

关于队列大小的说明

如果所有的工人都很忙,你的队伍就可以填满了。你会想要关注一下,也许会增加更多的工人,或者有其他的策略。

 

RabbitMQ学习(公平派遣)

标签:img   iter   调度   als   关注   方法   com   code   channel   

原文地址:https://www.cnblogs.com/missliu/p/8075192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!