通道预取计数和消费者预取计数之间有什么区别?

时间:2017-05-04 13:05:14

标签: rabbitmq

最近升级到RabbitMQ服务器会看到管理面板中为消费者报告的预取计数发生了变化。

频道预取计数和消费者预取计数之间有什么区别?如下所示?

enter image description here

我们正在运行一个设置,我们有多个线程消耗单个消费者/频道。我们允许线程计数和预取计数在运行中进行调整。我们应该使用c#客户端上Model.BasicQos(prefetchLength, prefetchCount, global);调用的参数组合?

1 个答案:

答案 0 :(得分:4)

在这两种情况下,基本上预取意味着(每个频道或每个消费者)未确认消息的数量(允许的最大数量)。在标题频道预取设置(QoS)下查看here。在频道预取的情况下需要注意的重要事项(我只是引用上述链接)

  

一旦数量达到配置的数量,RabbitMQ将停止   除非至少有一个消息,否则在频道上传递更多消息   杰出的人是公认的。

所以不再向该频道上的任何消费者发送消息!

在设置两个预取值时,哪些数字意味着什么以及发生什么事情的好例子可以找到here,所以你的案例中你需要的值是任意的,但显然取决于各种因素,如:发布频率,消息大小,消费者数量等。

在屏幕截图中,您的消费者预取似乎比信道预取更大。现在我不知道网络管理ui在报告什么,也不知道rabbitmq或c#库如何处理这个问题,但我会说根据文档中的内容,消费者预取计数只能小于或等于通道预取计数(我的意思是当然它实际上在运行时使用,而不是在声明时)。