Событие должно переживать падение процесса, а изменение данных и отметка об обработке — фиксироваться атомарно.
Событие валидное, не дубль, порядок понятен, но во время обработки сервис падает. Как обеспечить надежность?
Событие должно переживать падение процесса, а изменение данных и отметка об обработке — фиксироваться атомарно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Событие должно переживать падение процесса, а изменение данных и отметка об обработке — фиксироваться атомарно.
После перезапуска незавершённые события обрабатываются повторно, поэтому операция должна быть идемпотентной. Внешние побочные эффекты выносите в надёжную очередь или outbox, а подтверждение сообщения отправляйте после фиксации результата.