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

Nid*_*ose 3 kafka-consumer-api spring-kafka

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

  • Spring Kafka -batchListener -true
  • 启用自动提交 - true
  • MAX_POLL_RECORDS_CONFIG - 默认 (500)
  • MAX_POLL_INTERVAL_MS_CONFIG - 默认(5 分钟)

Gar*_*ell 5

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

来自卡夫卡文档:

如果为 true,消费者的偏移量将在后台定期提交。

另请参阅auto.commit.interval.ms

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

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

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