Механизм повтора RabbitMQ

Я использую rabbitMQ, я беру каждое сообщение из очереди с basic_get без автоматической процедуры подтверждения, что означает, что сообщение остается в очереди до тех пор, пока я не получу подтверждение.

Иногда у меня есть сообщения, которые не могут быть обработаны из-за какого-то исключения, которое препятствует их полной обработке.

В этих случаях я хочу повторить попытку, скажем, два раза сразу, и если я все еще не смог обработать их в результате — я хочу повторить еще 3 раза с интервалом в один час, если затем все не получится, я бы хотел сообщение и удалить его из очереди навсегда.

Вопрос в том, существует ли какой-либо механизм в rabbitMQ, который предоставляет мне повторные попытки отправки сообщений (который также учитывает количество повторных попыток) и возможность выбора, когда повторная попытка запускается — какой-то механизм отсрочки?

0

Решение

Вы должны использовать несколько очередей для этого.

У меня была похожая проблема, я решил эту проблему, переместив сообщения, которые столкнулись с проблемой, в другую очередь.

Если у вас возникло исключение, то поймайте его, подтвердите сообщение и переместите его, скажем, в error_queue_1. Вы можете настроить второго слушателя (с другим таймером), который будет обрабатывать error_queue_1.

И вы можете повторять этот процесс столько раз, сколько считаете нужным.

Это также позволит вам понять, сколько сообщений было проблем, какое и т.д.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]