卡夫卡消费者在超过max.poll.interval.ms

时间:2019-06-24 10:00:36

标签: go apache-kafka confluent-kafka librdkafka

当使用者在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

我看到here是在融合的kafka-go中定义的git-credential-cache,但是找不到它的位置。

如果出现任何此类错误,为什么程序不退出?

  • Kafka v1.1.0
  • librdkafka v1.0.0
  • confluent-kafka-go(管理员)

用于kafka.Consumer的配置

ErrMaxPollExceeded

1 个答案:

答案 0 :(得分: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