我设置了一个RabbitMQ 服务器,在其中使用Python-Pika获取消息。问题是,如果我启用了持久传递模式,并且工作人员无法处理消息。它不会释放消息,而是会一直保留到消息,直到 RabbitMQ 连接被重置。
有没有办法确保无法处理的消息在合理的时间范围内从可用的工作人员(包括同一个工作人员)再次被拾起?
这是我当前的代码
if success:
ch.basic_ack(delivery_tag=method.delivery_tag)
else:
syslog.syslog('Error (Callback) -- Failed to process payload: %s' % body)
这个想法是我永远不想丢失一条消息,而是希望它被重新发布,或者如果它失败了,我希望它再次被拾起。在工作人员成功处理消息之前,应该始终如此。这通常发生在其中一名工作人员无法打开与 HTTP 服务器的连接时。