我正在使用pika的扭曲协议适配器。当我成功处理消息后,我使用以下调用向 RabbitMQ 发送确认:
channel.basic_ack(delivery_tag=delivery_tag)
basic_ack调用似乎异步触发,但它没有返回延迟,所以我无法添加回调或错误。我现在遇到了一个小问题,因为我想等待队列中的某个消息,处理它并关闭反应器,即
channel.basic_ack(delivery_tag=delivery_tag)
reactor.stop()
当然,在发送消息之前,反应器会关闭。我正在通过延迟关机来解决这个问题
channel.basic_ack(delivery_tag=delivery_tag)
reactor.callLater(5, reactor.stop)
但这似乎是一种非常"笨拙"的方式。我希望能够做这样的事情:
d = channel.basic_ack(...)
d.addBoth(lambda x: reactor.shutdown())
我在这里错过了一些明显的东西吗?真的不可能将回调链接到确认调用的末尾吗?
因此,似乎唯一的选择是等待并希望确认已成功发送