Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.
Как должен работать один message relay service: какие запросы он выполняет и что происходит после публикации в Kafka?
Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для transactional outbox relay выбирает готовые непереданные события, публикует их в Kafka и после подтверждения отмечает отправленными. Бизнес-изменение и запись события ранее фиксируются одной транзакцией БД.
Один relay может читать ограниченные пачки по статусу и порядку, публиковать со стабильным event ID и обновлять sent_at. При сбое после публикации, но до отметки возможна повторная отправка — потребителю нужна идемпотентность. Не отмечайте событие до подтверждения брокера. Для нескольких relay понадобится безопасное распределение работы; порядок для одного агрегата следует сохранять отдельно. Kafka-транзакция сама по себе не делает атомарной запись во внешнюю БД.
Источник: microservices.io.