【问题标题】:Kafka consumer gets stuck after exceeding max.poll.interval.msKafka 消费者在超过 max.poll.interval.ms 后卡住了
【发布时间】:2019-06-24 10:00:36
【问题描述】:

当消费者在 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 中定义为 here 但无法找到它在哪里被提升。

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

  • Kafka v1.1.0
  • librdkafka v1.0.0
  • confluent-kafka-go (master)

用于 kafka.Consumer 的配置

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

【问题讨论】:

  • 您调用 Poll() 或 ReadMessage() 的超时时间是否超过了 max.poll.interval.ms?如果是这样,您可能遇到了 librdkafka 中的问题,该问题已在 librdkafka v1.1.0 中修复。
  • @Edenhill 不,我打电话给Poll(),超时时间为 100 毫秒
  • 嗨@esquarer,你找到解决方案了吗,请让我知道我面临同样的问题。

标签: go apache-kafka confluent-platform librdkafka


【解决方案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

问题中的一些 cmets 仍然报告这是在 >1.1.0 版本上遇到的问题。

评论者建议解决方法:

使用 v1.5.2。同样在无限循环中调用 ReadMessage(-1),并且在消费者离开组后没有看到重新加入,通过将超时设置为小于 max.poll.interval.ms 而不是 -1 来解决它,但想知道为什么它没有重新加入预计。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 2022-01-23
    • 2023-04-11
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    相关资源
    最近更新 更多