Как должен работать один message relay service: какие запросы он выполняет и что происходит после публикации в Kafka?

Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.

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

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

Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.

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

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

Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.

Один relay может читать ограниченные пачки по статусу и порядку, публиковать со стабильным event ID и обновлять sent_at. При сбое после публикации, но до отметки возможна повторная отправка — потребителю нужна идемпотентность. Не отмечайте событие до подтверждения брокера. Для нескольких relay понадобится безопасное распределение работы; порядок для одного агрегата следует сохранять отдельно. Kafka-транзакция сама по себе не делает атомарной запись во внешнюю БД.

Источник: microservices.io.

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

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

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

Подробнее