Я изучаю apache kafka уже месяц. Тем не менее, я сейчас застрял. Мой вариант использования: у меня есть два или несколько потребительских процессов, работающих на разных машинах. Я провел несколько тестов, в которых я опубликовал 10 000 сообщений на сервере kafka. Затем, обрабатывая эти сообщения, я убил один из потребительских процессов и перезапустил его. Потребители писали обработанные сообщения в файле. Таким образом, после того, как потребление закончилось, файл показывал более 10 тыс. Сообщений. Поэтому некоторые сообщения были дублированы.
В потребительском процессе я отключил автоматическую фиксацию. Потребители вручную фиксируют смещения в пакетном режиме. Так, например, если в файл записано 100 сообщений, потребитель совершает смещения. Когда один потребительский процесс запущен и он аварийно завершает работу и восстанавливает дублирование, таким образом избегается. Но когда работает более одного потребителя, и один из них падает и восстанавливается, он записывает дубликаты сообщений в файл.
Есть ли эффективная стратегия, чтобы избежать дублирования сообщений?