Я работаю над приложением, использующим поток Kafka и базу данных.
В моем приложении я управляю смещением Kafka вручную и фиксирую смещение только в случае успешной обработки сообщения (т.е. после успешной обработки и обновления в БД).
Однако, если после обновления БД мое приложение отключается до фиксации, то, когда оно возвращается, это приводит к дублированию записи в БД из-за незафиксированного смещения.
Я хочу избежать этих дубликатов, но при этом убедиться, что обрабатываю каждое сообщение. Как правильно это сделать?
РЕДАКТИРОВАТЬ: Мое обновление БД в основном увеличивает счетчик записи на некоторое значение. Таким образом, операторы MERGE не подходят.