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