dzheka3d
@dzheka3d

Что делать, если сервер RabbitMq оказался не доступен?

Всем привет! Посоветуйте способы решения вот такой проблемы:
Предположим, пользователь создает некий пост, во время его сохранения на сервере, я генерирую сообщение в очередь сообщений RabbitMq о том, что создан новый пост, а значит нужно сгенерировать все уведомления (Push, Email и т.д.)
Но почему-то сервер RabbitMq оказался не запущен или он не отвечает или еще что-то, но суть в том, что при попытке конекта - вылетит ошибка 500, соотвественно пользователь увидит ошибку.
Если ее обработать чтобы она не вылетала, то сообщение все равно не будет доставлено консьюмеру. Получается пользователь создал пост, но никто уведомления не получит.
Какие выходы из данной ситуации бывают?
Может такие сообщения сохраняются в БД, а потом при запуске сервера и консьюмеров мы каким-то сторонним скриптом пытаемся вытащить сообщения из БД и закинуть их повторно в RabbitMq?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Можно поступать по-разному, в зависимости от требований, но в хороших практиках считается проверять все необходимые коннекты до начала исполнения бизнес-логики. Если что-то не получается - сообщите пользователю что функционал не доступен. Вообще, от таких случаев ставят Cluster RabbitMQ хотя бы из 2х нод. Сохранять куда-то еще сообщения имеет смысл очень редко и только для не критичных данных
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Храните локально и изредка проверяйте коннект.
Если вы отправили то ставите 1 галочку, если прочтено то 2

Сугубо как в телеграмме или в твитере.

Как это в коде, реализовать, тут выбирайте сами
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы