两个Kafka使用者具有相同的groupid,四个主题具有0个分区

时间:2020-05-05 11:14:35

标签: apache-kafka kafka-consumer-api spring-kafka

两个实例正在使用相同的groupid运行到同一Kafka使用者,我有4个主题,分区为0。以下是我的YAML配置:

consumer:
  bootstrap-servers:  ${KAFKA_BOOTSTRAP_SERVERS}
  group-id: group-id
  key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
  value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
  enable-auto-commit: false
  auto-offset-reset: earliest
  max-poll-records: 10
  max-poll-interval-ms: 660000
  properties:
    max:
      poll:
        interval:
          ms: 300000
  session:
    timeout:
      ms: 300000
    heartbeat:
      interval:
        ms: 25000
listener:
  ack-mode: MANUAL_IMMEDIATE 

我正在观察两个实例的日志,当一个实例正常工作时,其他实例则抛出错误:org.apache.kafka.clients.consumer.CommitFailedException:由于该组已经重新平衡并分配了分区,因此提交无法完成另一个成员。这意味着后续调用poll()的时间比配置的max.poll.interval.ms更长,这通常意味着轮询循环花费了太多时间进行消息处理。您可以通过增加会话超时或通过使用max.poll.records减小poll()中返回的批处理的最大大小来解决此问题。

然后第二个正常,第一个抛出错误。并且在处理记录时,以下消息不断出现:

2020-05-05 15:57:52.874信息23804-[onnectorservice] oakccinternals.AbstractCoordinator:[Consumer clientId = consumer-2,groupId = group-id]尝试心跳失败,因为组正在重新平衡

,但消息已成功处理。毕竟,我的所有消息均已成功处理。 我究竟需要更改以避免这些错误。

当一个使用者关闭并重新启动时,就会发生这种情况:只有错误出现在日志中。

0 个答案:

没有答案