Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.
Как организовать обработку ошибок публикации из outbox: нужно ли отправлять весь батч или можно обработать успешно отправленные и ошибочные сообщения отдельно?
Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.
Не помечайте весь батч отправленным при частичном успехе. Храните идентификатор события, состояние попытки и время следующего повтора; используйте backoff и ограничение повторов для постоянных ошибок. Если брокер принял сообщение, но подтверждение потерялось, повтор неизбежно может создать дубликат. При требованиях к порядку внутри одного aggregate нельзя бесконтрольно пропускать неотправленное событие и публиковать следующие.