【问题标题】:Timeout of 60000ms expired before successfully committing the current consumed offsets在成功提交当前消耗的偏移量之前,超时 60000 毫秒已过期
【发布时间】:2021-10-12 09:17:25
【问题描述】:

出于测试目的,我在一个 Kafka 主题上发布了 5k 条消息,并且我使用 pull 方法在我的 spring 批处理应用程序中的每次迭代中读取 100 条消息,它在完成之前运行了大约 2 小时。

有时会遇到以下错误并且执行会停止。

org.apache.kafka.common.errors.TimeoutException: 60000ms 的超时时间在成功提交偏移之前过期

可能是什么原因和解决方法?

【问题讨论】:

  • 您真的在执行停止之前收到您的数据吗?您使用哪个 IsolationLevel?
  • 似乎在调用 consumer.commitSync https://kafka.apache.org/22/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#commitSync-- 时引发了超时。发生这种情况是因为 kafka 提交不成功。请提供更多信息在哪种情况下失败。

标签: apache-kafka spring-batch


【解决方案1】:

您是否在两个小时内消费完所有消息?如果仍在消耗,则可能会触发 MAX_POLL_INTERVAL_MS_CONFIG。默认值为 5 分钟。如果 poll() 之间的时间间隔超过 5 分钟,则会被踢出消费者组并重新平衡。 在此过程中,消费者组不可用。 更多信息我不清楚,只是提供一个解决方向。

fix by 20211012:“如果还在消费,可能会触发MAX_POLL_INTERVAL_MS_CONFIG”表示如果消费还没有结束,那么消费速度很慢,所以可能会触发这个机制.您可以调整这个参数来尝试验证。

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2018-02-22
    • 2020-11-21
    • 2021-02-22
    • 2019-12-26
    • 2019-03-14
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多