Потребитель Кафки застревает после превышения 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