Вопрос проверяет опыт работы с брокерами.
С двумя независимыми очередями вы упираетесь в проблему двойной записи и отсутствие атомарности между БД и обоими брокерами. Без 2PC (дорого/редко доступно) единственный практичный путь — Outbox + идемпотентные публикации.
Проблема:
«Записал в БД → опубликовал в A → упал на публикации в B» — состояние рассинхронизировано.
Почему не 2PC:
брокеры часто не поддерживают общий координирующий протокол с СУБД;
это усложняет и снижает доступность.
Решение:
Outbox (одна транзакция в БД);
релей публикует в обе очереди, ретраит до успеха;
консумеры/побочные системы — идемпотентны.
Вывод: для нескольких очередей используйте Outbox и надежные ретраи вместо попыток «одной глобальной транзакции».
Уровень
Рейтинг:
4
Сложность:
7
Навыки
Postgres
Kafka
Ключевые слова
Подпишись на Golang Developer в телеграм