消息处理时出现Kafka错误

时间:2019-03-14 06:21:14

标签: spring-boot apache-kafka

  

偏移量{<TOPICNAME>-0=OffsetAndMetadata{offset=4, metadata=''}}的异步自动提交失败:
  由于组已经重新平衡并将分区分配给另一个成员,因此无法完成提交。这意味着后续调用poll()的时间比配置的max.poll.interval.ms更长,这通常意味着轮询循环在消息处理上花费了太多时间。
您可以通过以下方法解决此问题:增加会话超时或通过减小poll()max.poll.records返回的批处理的最大大小。

2 个答案:

答案 0 :(得分:1)

消费者设置的

session.timeout.ms应该小于卡夫卡经纪人设置的group.max.session.timeout.ms

请参考:

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

答案 1 :(得分:0)

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

设置更高的值意味着检测到真正的失败将花费更长的时间。因此,我们不应该增加session.time.out。

我们现在可以减少最大轮询记录或增加最大轮询间隔以解决此问题。

如果未遵循GroupCoordinator的超时条件,则将获得无效的会话超时。

kafka.coordinator.group。GroupCoordinator

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