Как дедуплицировать события?

Middle
82 просмотров
AFK Offer AI

Каждое событие имеет уникальный event_id. Consumer хранит обработанные ID в таблице processed_events. Перед обработкой — INSERT с ON CONFLICT DO NOTHING. Если вставка прошла — обрабатываем, если конфликт — пропускаем. Обработка и запись ID должны быть в одной транзакции. Для очистки — TTL на старые записи. Альтернатива — exactly-once delivery в Kafka с idempotent producer.

Следующий вопрос

Как работать с distributed transactions в Go?