В настоящее время я использую архитектуру, управляемую событиями, в микросервисах. У меня есть один вопрос, связанный с системами на основе событий:
Например, предположим, что у меня есть модель Person, которая реагирует на ProfileChangeEvent (содержит имя, которое необходимо обновить человеку). Теперь у меня есть следующая ситуация по шагам:
- Измените имя профиля на 'Mike' и publi sh ProfileChangeEvent с name = 'Mike'
- Снова измените имя профиля на 'Micheal 'и publi sh ProfileChangeEvent с name =' Michael '
- Два события были доставлены в правильном порядке, но первая обработка события завершилась неудачно, и событие попало в очередь недоставленных писем (DLQ), в конечном итоге - человек имя - «Майкл», так как второе событие потребления прошло успешно.
- Через некоторое время я заметил это первое неудачное событие в DLQ и повторно опубликовал sh его и его потребление, теперь имя человека - «Майк», неверно, поскольку «Майкл» на самом деле является последним обновленным значением.
Пожалуйста, дайте совет, как поступать в таких ситуациях?