是否可以使用auto-ack = false禁用预取?我只是想在每次确认消息时避免从队列中读取消息(预取)。我只想在调用'consume_message'时才读取消息。设置prefetch_count = 0似乎不起作用,并将其视为“无特定限制”。
修订版:
据我所知,'prefetch_count'是客户端缓存的消息数(本地读取到缓冲区)。例如,有一个用例:
(我们假设我们连接的队列有消息)
我认为将prefetch_count设置为0将避免执行步骤4,并且只有在您阅读时才会传输邮件 - 在客户端没有缓存。
答案 0 :(得分:1)
预取和自动确认与此无关。预取计数只是准备传递给特定消费者的一些未确认消息。
假设您将预取计数设置为N.如果将auto-ack设置为true,则表示这些N条消息在接收时被确认。如果将其设置为false,这意味着您仍然可以获得N条消息,但在手动确认之前它们不会被确认。
对于最后一部分 - 尝试将prefetch_count设置为1。
同时检查此question和两个答案。