Как организовать обработку ошибок публикации из outbox: нужно ли отправлять весь батч или можно обработать успешно отправленные и ошибочные сообщения отдельно?

Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.

Короткий ответ

Что ответить на собеседовании

Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.

Подробный разбор

Ответ с пояснениями

Можно фиксировать успехи и ошибки отдельно, если известен результат каждого сообщения. Неподтверждённые сообщения повторяются, а получатель должен выдерживать дубликаты.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее