Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: consistency, outbox, transaction, delivery guarantee

Что такое transactional consistency в контексте Outbox?

Обмен сообщениями

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

Transactional consistency гарантирует, что бизнес-операция и сообщение в outbox сохраняются в одной транзакции. Это предотвращает потерю данных при сбое.

Длинный ответ

Если сообщение для внешнего сервиса (например, Kafka) отправляется отдельно от записи в БД, возможен сбой между этими шагами. Тогда данные окажутся в БД, но не дойдут до подписчика.

Transactional Outbox решает эту проблему:

  1. Сообщение записывается в outbox в рамках той же транзакции, что и бизнес-данные.

  2. Отдельный процесс (poller/worker) читает из outbox и отправляет данные.

  3. Таким образом, либо сохраняется и бизнес-событие, и сообщение, либо ничего.

Это повышает надёжность межсервисного взаимодействия без использования сложных двухфазных коммитов.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Golang

    Golang

  • Postgres

    Postgres

  • Kafka

    Kafka

Ключевые слова

#consistency

#outbox

#transaction

#delivery guarantee

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.