有人可以帮助理解消费者线程何时使用spring kafka批处理侦听器并将auto commit设置为true来提交偏移吗?在默认情况下,处理线程中的所有消息后,使用者线程是否将提交偏移量?我知道autoCommit为false时,提交将基于AckModes,但想知道autoCommit何时为真
答案 0 :(得分:1)
对于enable.auto.commit=true
,容器完全不负责提交偏移量-完全取决于kafka-clients库中的算法。
从kafka文档中:
如果为true,则消费者的补偿将在后台定期提交。
另请参阅auto.commit.interval.ms
如果将enable.auto.commit设置为true,则将消费者偏移量自动提交给Kafka的频率(以毫秒为单位)。
默认将其设置为5秒,因此,如果您在少于该时间的时间内处理批处理,则批处理完成时可能会提交也可能不会提交偏移。客户端在下次轮询开始时检查自上次提交以来的时间。
我更喜欢将其设置为false
,以便您有明确的行为-批处理侦听器正常退出时,容器将提交偏移量。