Как получить «ровно один раз» при записи из Kafka во внешнюю базу
Консьюмер читает платежи из Kafka и пишет их в PostgreSQL. Бизнес требует, чтобы каждый платёж учитывался ровно один раз, даже при падении консьюмера между записью в базу и коммитом смещения. Коллега предлагает включить enable.idempotence и транзакции Kafka.
Что действительно решает задачу?
- Сохранять смещение в той же транзакции базы
- Включить идемпотентного продюсера Kafka
- Коммитить смещение до записи в базу
- Уменьшить auto.commit.interval.ms
