@WhiteKeep

Как организовать RabbitMQ очередь для нескольких микросервисных приложений?

К примеру есть очереди mail-confirm, mail-receipt. Первая для писем подтверждения почты, вторая для квитанций.
Существует несколько одинаковых приложений, которые берут из очереди сообщение и по данным из этого сообщения отправляют письма по e-mail.

Однако я столкнулся с теоретическими проблемами

К примеру, если вынимать сообщение из очереди с удалением, то есть такой момент в работе приложения, когда сообщения в очереди уже нет, а письмо ещё не отправлено. Если в этот момент с приложением или машиной, на которой оно работает, что-то произойдёт, то письмо будет утеряно и не отправлено.

Если же вынимать сообщения из очереди без удаления, а удалять только после отправки письма, то при работе нескольких приложений может случиться так, что два приложения возьмут одно и то же сообщение из очереди

Как можно в таком случае организовать гарантированную отправку письма?

Это только теория и на практике вне high load вряд-ли понадобится микросервисная архитектура для таких задач, однако хотелось бы узнать как подобную проблему решают в нормальных проектах
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yarkin
В AMQP есть механизмы подтверджения клиентом обработки сообщения (basic.ack), посмотрите вот тут вот тут
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы