У меня есть RabbitMQ Server, на котором я получаю сообщения, используя 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-сервером.