RabbitMQ 中的 prefetchSize 是什么?

Fat*_*ğlu 13 rabbitmq

在RabbitMQ教程中,有这样的代码:

channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
Run Code Online (Sandbox Code Playgroud)

我明白什么是prefetchCountglobal,但不明白prefetchSize

有人知道吗?

小智 12

我在协议参考中找到了这个https://www.rabbitmq.com/amqp-0-9-1-reference.html中找到了这一点(强调我的):

长预取大小

客户端可以请求提前发送消息,这样当客户端处理完一条消息时,后面的消息就已经保存在本地,而不需要沿着通道发送。预取可以提高性能。该字段指定预取窗口大小(以八位字节为单位)。如果消息大小等于或小于可用预取大小,服务器将提前发送消息(并且也落入其他预取限制),服务器将提前发送消息。可以设置为零,表示“没有特定限制”,但其他预取限制可能仍然适用。如果设置了 no-ack 选项,则忽略预取大小。

当客户端不处理任何消息时,服务器必须忽略此设置 - 即预取大小不限制向客户端传输单个消息,仅在客户端仍然有一个或多个未确认的消息时提前发送更多消息。