Что делать, если сервер RabbitMq оказался не доступен?
Всем привет! Посоветуйте способы решения вот такой проблемы:
Предположим, пользователь создает некий пост, во время его сохранения на сервере, я генерирую сообщение в очередь сообщений RabbitMq о том, что создан новый пост, а значит нужно сгенерировать все уведомления (Push, Email и т.д.)
Но почему-то сервер RabbitMq оказался не запущен или он не отвечает или еще что-то, но суть в том, что при попытке конекта - вылетит ошибка 500, соотвественно пользователь увидит ошибку.
Если ее обработать чтобы она не вылетала, то сообщение все равно не будет доставлено консьюмеру. Получается пользователь создал пост, но никто уведомления не получит.
Какие выходы из данной ситуации бывают?
Может такие сообщения сохраняются в БД, а потом при запуске сервера и консьюмеров мы каким-то сторонним скриптом пытаемся вытащить сообщения из БД и закинуть их повторно в RabbitMq?
Можно поступать по-разному, в зависимости от требований, но в хороших практиках считается проверять все необходимые коннекты до начала исполнения бизнес-логики. Если что-то не получается - сообщите пользователю что функционал не доступен. Вообще, от таких случаев ставят Cluster RabbitMQ хотя бы из 2х нод. Сохранять куда-то еще сообщения имеет смысл очень редко и только для не критичных данных