Как данные проходят из сервиса через очередь в хранилище

Изменение заказа и outbox-запись фиксируются вместе; издатель передаёт событие брокеру, а потребитель сохраняет результат и отметку обработки одной транзакцией. Повторные события отсекаются по event_id.

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

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

Изменение заказа и outbox-запись фиксируются вместе; издатель передаёт событие брокеру, а потребитель сохраняет результат и отметку обработки одной транзакцией. Повторные события отсекаются по event_id.

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

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

Условие

Сервис заказов публикует события о создании заказов. Другой сервис читает их из брокера и обновляет отчётную таблицу. Опишите движение данных и защиту от потерь и повторной обработки при сбоях.

Ответ

Изменение заказа и outbox-запись фиксируются вместе; издатель передаёт событие брокеру, а потребитель сохраняет результат и отметку обработки одной транзакцией. Повторные события отсекаются по event_id.

Событие содержит event_id, order_id, версию схемы и минимальные необходимые данные. Outbox-издатель может отправить событие повторно после неопределённого сетевого результата, поэтому доставка не заменяет идемпотентность.

Потребитель проверяет формат, в транзакции регистрирует уникальный event_id и обновляет отчётную таблицу. Подтверждение брокеру отправляется после commit. Если подтверждение потерялось, повтор распознаётся по ID и не меняет результат второй раз. Временные ошибки повторяют с задержкой; неисправимые сообщения изолируют с диагностикой без чувствительного payload.

Для изменений одного заказа может понадобиться версия события: дедупликация устраняет повторы, но сама по себе не решает проблему неправильного порядка.

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

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

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

Подробнее