兔子消费者在 channel.basic.ack 后停止消费

Rabbit consumer stops consuming after channel.basic.ack

我使用 python3 和 amqpstorm 包。我有这段代码(缩写)与打开的 rabbitmq 连接一起工作:

ichannel = connection.channel(rpc_timeout = 5)
ichannel.basic.qos(10000)
ichannel.queue.bind(...)
ichannel.basic.consume(self.<process_message>, <queue>, no_ack = False)
ichannel.start_consuming(to_tuple = False)

我在收到最后一条消息后批量处理这 10000 条消息,当我在 process_message 函数中调用时:

ichannel.basic.ack(0, True)

确认所有 10000 条消息。函数 start_consuming 结束。请问有人知道为什么吗?我想在多次确认后继续接收消息...

解决方法是将最后一条消息的真实投递标签传递给 basic.ack 函数,而不是一般情况下将 0(应该以相同的方式表现 - 但它不会...)。