3

我正在使用 pika 的扭曲协议适配器。成功处理消息后,我使用此调用向 RabbitMQ 发送确认:

channel.basic_ack(delivery_tag=delivery_tag) 

basic_ack 调用似乎是异步触发的,但它没有返回延迟,因此我无法添加回调或 errback。我现在遇到了一个小问题,因为我想等待队列中的某个消息,处理它并关闭反应器,即

channel.basic_ack(delivery_tag=delivery_tag)
reactor.stop()

当然,反应堆在消息发送之前关闭。我正在通过延迟关机来解决这个问题

channel.basic_ack(delivery_tag=delivery_tag)
reactor.callLater(5, reactor.stop)

但这似乎是一种非常“hacky”的方式。我希望能够执行以下操作:

d = channel.basic_ack(...)
d.addBoth(lambda x: reactor.shutdown())

我在这里遗漏了一些明显的东西吗?真的不可能将回调链接到 ack 调用的末尾吗?

4

1 回答 1

0

所以似乎唯一的选择是等待并希望确认已成功发送

于 2014-11-17T01:09:15.207 回答