Ошибка в рассылке: решите задачу и найдите потерянные сообщения в RabbitMQ
Задача будет полезна всем, кто работает с почтовыми сервисами.
Условие
Компания Х решила внедрить брокер сообщений RabbitMQ, так как в последнее время нагрузка на их сервисы возросла.
Вы пишете сервис, который рассылает электронные письма пользователям. Для этого постоянно слушаете RabbitMQ на предмет новых сообщений и при получении отправляете рассылку. Но иногда ваш сервис не может обработать запрос на рассылку по неизвестной причине — и что еще хуже, вы не можете исправить этот баг. В результате часть email не отправляются, а пользователи пропускают важные новости о компании.
Задача
Разработайте механизм, который позволяет правильно обрабатывать сообщения в RabbitMQ. При успешной обработке сообщения должны удаляться из очереди, а в случае ошибки — возвращаться в очередь и обрабатываться повторно.
Знаете ответ? Делитесь своими вариантами в комментариях! А если нужна помощь, смотрите решение в Академии Selectel.
В RabbitMQ можно узнать статус сообщения
Просто узнать недостаточно, нужен basic_ack, чтобы удалить сообщение и basic_nack для повторной отправки. В общем ничего сложного
Проще брокера сообщений сменить ;)