Outbox надёжно связывает изменение данных и будущую отправку события. Inbox помогает получателю не применять одно сообщение повторно. Оба паттерна особенно полезны при доставке at-least-once.
Что такое паттерны Outbox и Inbox?
Outbox надёжно связывает изменение данных и будущую отправку события. Inbox помогает получателю не применять одно сообщение повторно. Оба паттерна особенно полезны при доставке at-least-once.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Outbox надёжно связывает изменение данных и будущую отправку события. Inbox помогает получателю не применять одно сообщение повторно. Оба паттерна особенно полезны при доставке at-least-once.
В одной транзакции с бизнес-изменением пишут запись outbox. Отдельный отправитель доставляет её брокеру и отмечает обработку; сбой между отправкой и отметкой может создать дубль.
Получатель хранит message ID в inbox и фиксирует его вместе с эффектом обработки в своей транзакции. Уникальность ID предотвращает повторный эффект в этой БД. Для внешних вызовов нужны собственные ключи идемпотентности: наличие inbox не даёт магического exactly-once для всех систем. Также требуются повторы, наблюдаемость и очистка истории.