Kafka偏移量管理:enable.auto.commit与enable.auto.offset.store

时间:2019-10-23 06:59:38

标签: apache-kafka librdkafka

默认情况下,除非通过禁用enable.auto.commit将其关闭,否则Kafka Consumer会定期提交当前偏移量。根据文档,您然后负责自己提交偏移量。因此,当我需要手动控制时,这似乎是可行的方法,但是documentation也提到了存储的偏移量,如果要手动控制,应该禁用enable.auto.offset.store并使用rd_kafka_offsets_store()并保持自动提交不变。

有人可以解释为什么后一种方法更受欢迎吗?禁用自动提交应该具有完全相同的效果?

1 个答案:

答案 0 :(得分:8)

使用enable.auto.commit=true,librdkafka将在固定间隔,重新平衡和使用者关闭时为每个分区提交最后存储的偏移量。

此处使用的偏移量是从内存偏移量存储中获取的。该商店将在enable.auto.offset.store=true时自动更新。

如果设置了enable.auto.offset.store=false,则可以通过rd_kafka_offsets_store()自己更新此内存偏移存储。

这比禁用enable.auto.commit更为可取,因为您不必自己重新实现定期执行commit的操作,而是可以依赖于已内置的逻辑。

您可以通过手动控制来确定是否以任何一种方式提交偏移量,但是自己禁用enable.auto.commit并调用commit很有可能导致更频繁的提交。