gpt4 book ai didi

RabbitMq:使用 auto-ack=false 禁用预取 (prefetch_count=0)

转载 作者:行者123 更新时间:2023-12-04 14:25:28 25 4
gpt4 key购买 nike

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

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

(假设我们连接到一个队列并且它有消息)

  1. 创建连接。
  2. 设置Basic.Qos (prefetch_count=1)
  3. 开始消费 Basic.Consume
  4. 由于 prefetch_count=1,一条消息已经传输到客户端并准备好被读取并标记为not-ack'd
  5. 阅读消息然后处理它。
  6. 然后消息被确认。一切都从第 4 步开始。

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

最佳答案

预取和自动确认没有那样的关系。预取计数只是一些准备发送给特定消费者的未确认消息。

假设您将 prefetch count 设置为 N。如果您将 auto-ack 设置为 true,这意味着这 N 条消息在接收时被确认。如果将其设置为 false,这意味着您仍然会收到 N 条消息,但在您手动确认它们之前它们不会被确认。

对于最后一部分 - 尝试将 prefetch_count 设置为 1。

同时检查这个 question以及两个答案。

关于RabbitMq:使用 auto-ack=false 禁用预取 (prefetch_count=0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46093663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com