Pika SelectConnection通过长时间运行的任务确认消息

时间:2018-01-27 19:18:54

标签: python rabbitmq pika

我有这个队列系统,我使用pika的SelectConnection来使用Rabbitmq队列,但我的任务可以处理很长时间,在这段时间Rabbitmq可以关闭连接,我的任务重新排队到Rabbitmq因为我不能确认消息。为了排除重新排队,我在处理消息之前使用确认消息传输了代码,但结果没有看到。我从这个示例中获取了代码from here

并将处理代码更改为:

def start_processing(self):
    self._channel.basic_qos(prefetch_count=1)
    self._channel.add_on_cancel_callback(self.on_consumer_cancelled)
    self._consumer_tag = self._channel.basic_consume(self.process_message,
                  self._queue,
                  no_ack=False,
                  exclusive=False)


def process_message(self, unused_channel, basic_deliver, properties, body):
    self._channel.basic_ack(delivery_tag=basic_deliver.delivery_tag)
    self.handle_message(body)

在消息未处理之前,确认消息不起作用

0 个答案:

没有答案