Потребитель Кафки застревает после превышения max.poll.interval.ms

Когда потребитель не получает сообщение в течение 5 минут (значение по умолчанию max.poll.interval.ms 300000ms), потребитель останавливается, не выходя из программы. Процесс потребителя зависает и больше не потребляет сообщения.

Следующее сообщение об ошибке регистрируется

MAXPOLL|rdkafka#consumer-1| [thrd:main]: Application maximum poll interval (300000ms) exceeded by 255ms (adjust max.poll.interval.ms for long-running message processing): leaving group

я вижу это ErrMaxPollExceeded определяется здесь как confluent-kafka-go, но не может найти, где он поднимается.

Если возникает такая ошибка, почему программа не завершает работу?

  • Кафка v1.1.0
  • librdkafka v1.0.0
  • конфлюент-кафка-го (мастер)

Конфиг используется для kafka.Consumer

{
    "bootstrap.servers":    "private.kafka.host",
    "group.id":             "foo.bar",
    "auto.offset.reset":    "earliest",
    "enable.auto.commit":   false,
}

1 ответ

Похоже, это проблема, о которой сообщается клиенту confluent-kafka-go: https://github.com/confluentinc/confluent-kafka-go/issues/344

Он отмечен как исправленный этим изменением, которое должно было быть выпущено в librdkafka версии 1.1.0: https://github.com/edenhill/librdkafka/commit/80e9b1ee0c0e477c02f18b130c4302240711a88d

Похоже, это изменение также должно было быть выпущено в confluent-kafka-go версии 1.1.0: https://github.com/confluentinc/confluent-kafka-go/tree/v1.1.0

В некоторых комментариях к проблеме по-прежнему сообщается, что эта проблема возникает в версиях> 1.1.0.

Комментатор предлагает обходной путь:

Использование v1.5.2. Также вызывая ReadMessage(-1) в бесконечном цикле и не видя повторного присоединения после того, как потребитель покинул группу, работал над этим, установив тайм-аут меньше, чем max.poll.interval.ms вместо -1, но задаваясь вопросом, почему он не воссоединяется как ожидал.

https://github.com/confluentinc/confluent-kafka-go/issues/344#issuecomment-745014864

Другие вопросы по тегам