RabbitMq:禁用自动确认为false的预取(预取计数=0)

RabbitMq:禁用自动确认为false的预取(预取计数=0),rabbitmq,amqp,Rabbitmq,Amqp,是否可以使用auto ack=false禁用预取?我只是想避免每次确认消息时都从队列中读取消息(预取)。我只想在调用“消费消息”时阅读消息。将预取计数设置为0似乎不起作用,它被视为“无指定限制” 更新: 据我所知,“prefetch_count”是客户端缓存的消息数(本地读取到缓冲区)。例如,有一个用例: (假设有一个我们连接的队列,它有消息) 创建一个连接 设置基本Qos(预取计数=1) 开始消费基本的。消费 由于预回迁计数=1,一条消息已传输到客户端,准备读取并标记为未确认 读取消息,然后对

是否可以使用auto ack=false禁用预取?我只是想避免每次确认消息时都从队列中读取消息(预取)。我只想在调用“消费消息”时阅读消息。将预取计数设置为0似乎不起作用,它被视为“无指定限制”

更新:
据我所知,“prefetch_count”是客户端缓存的消息数(本地读取到缓冲区)。例如,有一个用例:

(假设有一个我们连接的队列,它有消息)

  • 创建一个连接
  • 设置基本Qos(预取计数=1)
  • 开始消费基本的。消费
  • 由于预回迁计数=1,一条消息已传输到客户端,准备读取并标记为未确认
  • 读取消息,然后对其进行处理
  • 然后,消息为“确认”。一切都从第4步开始

  • 我认为将预回迁计数设置为0可以避免第4步,并且只有在您读取消息时才会传输消息-客户端没有缓存。

    预回迁和自动确认与此无关。预回迁计数只是准备发送给特定消费者的未确认的消息数

    假设您将预回迁计数设置为N。如果您将自动确认设置为true,则这意味着这些N条消息在接收时被确认。如果将其设置为false,这意味着您仍然会收到N条消息,但在您手动确认之前,它们不会被确认

    对于最后一部分-尝试将预回迁计数设置为1

    同时检查这两个答案。

    Hm。。。文档中说:“如果设置了无ack选项,则忽略预取计数”。现在还不清楚—客户端使用了多少消息?您建议我的东西(auto ack=false和prefertch_ucount=1)正是我更新部分问题的用例。但关键是第4步。这是我想要避免的。将预取计数设置为0无效-这意味着未指定计数。我希望这是清楚的。