Проверяет навыки работы с БД и очередями.
Outbox-паттерн сохраняет сообщение в таблицу вместе с изменением состояния, а потом отдельный процесс (consumer) читает и отправляет их в Kafka. Это обеспечивает атомарность между БД и очередью.
Outbox нужен для решения проблемы несогласованности между базой и очередью сообщений (например, Kafka). Проблема: если сначала обновить БД, а потом отправить сообщение — можно потерять сообщение при падении.
Суть Outbox-паттерна:
В одной транзакции:
Изменяется бизнес-сущность.
Вставляется запись в таблицу outbox.
Отдельный фоновый процесс:
Читает сообщения из outbox.
Отправляет в Kafka.
Помечает сообщение как отправленное или удаляет.
Преимущества:
Сообщение не теряется при сбоях.
Позволяет восстановить процесс с любого момента.
Поддерживает idempotency и retries.
Уровень
Рейтинг:
5
Сложность:
7
Навыки
Golang
Postgres
Kafka
Ключевые слова
Подпишись на Golang Developer в телеграм