Обмен сообщениями
Transactional consistency гарантирует, что бизнес-операция и сообщение в outbox сохраняются в одной транзакции. Это предотвращает потерю данных при сбое.
Если сообщение для внешнего сервиса (например, Kafka) отправляется отдельно от записи в БД, возможен сбой между этими шагами. Тогда данные окажутся в БД, но не дойдут до подписчика.
Transactional Outbox решает эту проблему:
Сообщение записывается в outbox в рамках той же транзакции, что и бизнес-данные.
Отдельный процесс (poller/worker) читает из outbox и отправляет данные.
Таким образом, либо сохраняется и бизнес-событие, и сообщение, либо ничего.
Это повышает надёжность межсервисного взаимодействия без использования сложных двухфазных коммитов.
Уровень
Рейтинг:
5
Сложность:
6
Навыки
Golang
Postgres
Kafka
Ключевые слова
Подпишись на Golang Developer в телеграм