и результативное состояние сохраняете в базу в рамках транзакции
После успешного сохранения нужно уведомить по почте о каком либо ивенте
В чем сложность:
Если транзакция успешно выполнится, но после приложение каким то образом упадет, то по почте никто не будет уведомлен. А это наносит критический ущерб бизнесу.
Как сделать так чтобы оба действия отработали успешно?
Гарантируйте отправку почты, сохраняйте айди и делайте по нему работу до тех пор пока не будет выполнена
У меня есть такая идея: Завезти Event Sourcing. И в качестве шины событий взять к примеру RabbitMQ. Если транзакция прошла и приложение упала То событие не будет в базе что уведомлен. А в кролике останется. После запуска прилы это событие обработается
если упадет до кролика?
Хороший поинт
еще надо не забывать про гамма-излучение и нейтрино
Выгрузи в кафку ивент. Процесс, который занимается рассылкой писем, прочитает его, пошлёт письмо
в рамках транзакции создаете в базе задачу на рассылку
Обсуждают сегодня