Ошибка в рассылке: решите задачу и найдите потерянные сообщения в RabbitMQ

Задача будет полезна всем, кто работает с почтовыми сервисами.

Ошибка в рассылке: решите задачу и найдите потерянные сообщения в RabbitMQ

Условие

Компания Х решила внедрить брокер сообщений RabbitMQ, так как в последнее время нагрузка на их сервисы возросла.

Вы пишете сервис, который рассылает электронные письма пользователям. Для этого постоянно слушаете RabbitMQ на предмет новых сообщений и при получении отправляете рассылку. Но иногда ваш сервис не может обработать запрос на рассылку по неизвестной причине — и что еще хуже, вы не можете исправить этот баг. В результате часть email не отправляются, а пользователи пропускают важные новости о компании.

Задача

Разработайте механизм, который позволяет правильно обрабатывать сообщения в RabbitMQ. При успешной обработке сообщения должны удаляться из очереди, а в случае ошибки — возвращаться в очередь и обрабатываться повторно.

Знаете ответ? Делитесь своими вариантами в комментариях! А если нужна помощь, смотрите решение в Академии Selectel.

44
22
11
4 комментария

В RabbitMQ можно узнать статус сообщения

Просто узнать недостаточно, нужен basic_ack, чтобы удалить сообщение и basic_nack для повторной отправки. В общем ничего сложного

Проще брокера сообщений сменить ;)