在channel.basic.ack之后,Rabbit消费者停止消费

时间:2017-09-19 08:04:36

标签: python-3.x rabbitmq amqpstorm

我使用python 3和amqpstorm包。我有这段代码(缩写)使用open rabbitmq connection:

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)

我收到最后一封邮件并在process_message函数中调用时,批量处理这10000条邮件:

ichannel.basic.ack(0, True)

确认所有10000封邮件。功能 start_consuming 结束。有人知道为什么吗?我希望在这种多次传播之后继续接收消息......

1 个答案:

答案 0 :(得分:0)

通过传递最后一条消息的真实传递标签来解决,而不是通常为0(它应该以相同的方式行事 - 但它并没有......)到basic.ack函数。