在Spring Kafka上的偏移提交,同时具有enable.auto.commit true的setBatchListener(true)

时间:2019-07-22 16:33:30

标签: kafka-consumer-api spring-kafka

有人可以帮助理解消费者线程何时使用spring kafka批处理侦听器并将auto commit设置为true来提交偏移吗?在默认情况下,处理线程中的所有消息后,使用者线程是否将提交偏移量?我知道autoCommit为false时,提交将基于AckModes,但想知道autoCommit何时为真

  • Spring Kafka-batchListener -true
  • enable.auto.commit-true
  • MAX_POLL_RECORDS_CONFIG-默认(500)
  • MAX_POLL_INTERVAL_MS_CONFIG-默认值(5分钟)

1 个答案:

答案 0 :(得分:1)

对于enable.auto.commit=true,容器完全不负责提交偏移量-完全取决于kafka-clients库中的算法。

从kafka文档中:

  

如果为true,则消费者的补偿将在后台定期提交。

另请参阅auto.commit.interval.ms

  

如果将enable.auto.commit设置为true,则将消费者偏移量自动提交给Kafka的频率(以毫秒为单位)。

默认将其设置为5秒,因此,如果您在少于该时间的时间内处理批处理,则批处理完成时可能会提交也可能不会提交偏移。客户端在下次轮询开始时检查自上次提交以来的时间。

我更喜欢将其设置为false,以便您有明确的行为-批处理侦听器正常退出时,容器将提交偏移量。