在RabbitMQ教程中,有这样的代码:
channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
我知道什么是prefetchCount和global,但不知道prefetchSize。有人知道吗?
prefetchCount
global
prefetchSize
lsmd5eda1#
我在协议参考https://www.rabbitmq.com/amqp-0-9-1-reference.html中发现了这一点(强调我的):长预取大小客户端可以请求提前发送消息,使得当客户端处理完一条消息时,后面的消息已经在本地保存,而不需要沿通道发送。预取可提高性能。此字段以八位字节为单位指定预取窗口大小。如果邮件大小等于或小于可用的预取大小,则服务器将提前发送邮件(也福尔斯其他预取限制)。可以设置为零,表示“无特定限制”,但其他预取限制可能仍然适用。如果设置了no-ack选项,则忽略预取大小。当客户端不处理任何消息时,服务器必须忽略此设置-即预取大小不限制向客户端传输单个消息,仅在客户端仍有一个或多个未确认消息时提前发送更多消息。
kuuvgm7e2#
prefetchSize:服务器将传送的最大内容量(以八位字节为单位),0表示无限制。prefetchCount:服务器将传送的最大消息数,如果不限制则为0。count表示根据邮件数量设置限制,而size表示根据实际邮件内容大小设置限制。
count
size
2条答案
按热度按时间lsmd5eda1#
我在协议参考https://www.rabbitmq.com/amqp-0-9-1-reference.html中发现了这一点(强调我的):
长预取大小
客户端可以请求提前发送消息,使得当客户端处理完一条消息时,后面的消息已经在本地保存,而不需要沿通道发送。预取可提高性能。此字段以八位字节为单位指定预取窗口大小。如果邮件大小等于或小于可用的预取大小,则服务器将提前发送邮件(也福尔斯其他预取限制)。可以设置为零,表示“无特定限制”,但其他预取限制可能仍然适用。如果设置了no-ack选项,则忽略预取大小。
当客户端不处理任何消息时,服务器必须忽略此设置-即预取大小不限制向客户端传输单个消息,仅在客户端仍有一个或多个未确认消息时提前发送更多消息。
kuuvgm7e2#
prefetchSize
:服务器将传送的最大内容量(以八位字节为单位),0表示无限制。prefetchCount
:服务器将传送的最大消息数,如果不限制则为0。count
表示根据邮件数量设置限制,而size
表示根据实际邮件内容大小设置限制。