Кафка потребляет одно и то же сообщение несколько раз - PullRequest
0 голосов
/ 03 февраля 2020

Я ставлю в очередь одно сообщение в очереди kafka.

Kafka Prop:

enable.auto.commit=true
auto.commit.interval.ms=5000
max.poll.interval.ms=30000

Обработка моего сообщения занимала около 10 минут. Поэтому сообщение продолжало обрабатываться через каждые 5 минут.

Затем я изменил реквизит max.poll.interval.ms на 20 минут. Теперь проблема устранена. Но мой вопрос заключается в следующем: почему это происходит. Так как у меня уже включена автоматическая фиксация, и это должно происходить каждые 5se c, тогда мои сообщения не помечаются как зафиксированные в первом случае

1 Ответ

1 голос
/ 03 февраля 2020

Если для enable.auto.commit установлено значение true, то наибольшее смещение фиксируется каждые auto.commit.interval.ms времени. Однако это происходит только всякий раз, когда вызывается poll(). В каждом опросе и в вашем случае каждые 20 минут (max.poll.interval.ms) проверяется enable.auto.commit. Всякий раз, когда вы poll(), потребитель проверяет, пора ли зафиксировать смещения, которые он возвратил в последнем опросе.

Теперь в вашем случае poll() вызывается каждые 20 минут, что означает, что он может даже занять до дополнительных 20 минут (+ 5000 мс) до совершения смещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...