【问题标题】:Getting Kafka Error while message processing [closed]消息处理时出现Kafka错误[关闭]
【发布时间】:2026-02-02 21:55:01
【问题描述】:

偏移量的异步自动提交 {<TOPICNAME>-0=OffsetAndMetadata{offset=4, metadata=''}} 失败:

kafka 消费者处理消息时出现此错误。

提交无法完成,因为该组已经重新平衡并将分区分配给另一个成员。这意味着后续调用 poll() 之间的时间比配置的 max.poll.interval.ms 长,这通常意味着轮询循环花费了太多时间处理消息。
您可以通过增加会话超时或增加会话超时来解决此问题。通过减少 poll()max.poll.records 返回的批次的最大大小。

【问题讨论】:

  • 您是否尝试过按照错误消息中的建议进行操作?为您的问题添加一些描述,也许显示您的配置的适当部分

标签: spring-boot apache-kafka


【解决方案1】:

在消费者上设置的session.timeout.ms 应该小于在 Kafka 代理上设置的group.max.session.timeout.ms

请参考:

https://github.com/dpkp/kafka-python/issues/746

【讨论】:

    【解决方案2】:

    Session.time.out 控制消费者可以在不向组协调器发送心跳的情况下持续多长时间。

    设置更高的值意味着,检测到真正的失败需要更长的时间。所以我们不应该增加 session.time.out。

    我们现在可以减少 max.poll.records 或增加 max.poll.interval.ms 来解决这个问题。

    如果我们没有遵循 GroupCoordinator 的超时条件,那么我们会得到无效的会话超时。

    kafka.coordinator.group.GroupCoordinator

     if (sessionTimeoutMs < groupConfig.groupMinSessionTimeoutMs ||
          sessionTimeoutMs > groupConfig.groupMaxSessionTimeoutMs) {
          responseCallback(joinError(memberId, Errors.INVALID_SESSION_TIMEOUT))
        }
    

    【讨论】:

      最近更新 更多