Kafka 偏移量管理:enable.auto.commit vs enable.auto.offset.store
Kafka offset management: enable.auto.commit vs enable.auto.offset.store
默认情况下,Kafka 消费者会定期提交当前偏移量,除非通过禁用 enable.auto.commit
将其关闭。根据文档,您然后负责自己提交偏移量。因此,当我想要 manual 控制时,这似乎是可行的方法,但是 documentation 还提到了 stored 偏移量并且如果你想要手动控制,你应该禁用 enable.auto.offset.store
并使用 rd_kafka_offsets_store()
并保持自动提交不变。
有人可以解释为什么后一种方法更受欢迎吗?禁用自动提交应该具有完全相同的效果?
使用 enable.auto.commit=true
librdkafka 将定期、重新平衡和消费者关闭时为每个分区提交最后存储的偏移量。
此处使用的偏移量取自内存中的偏移量存储。本店将在enable.auto.offset.store=true
.
时自动更新
如果您设置了 enable.auto.offset.store=false
,您可以通过 rd_kafka_offsets_store()
.
自行更新此内存偏移量存储
这优于禁用 enable.auto.commit
,因为您不必自己重新实现定期调用提交,而是可以依赖已经内置的逻辑。
您可以 手动控制 是否以任何一种方式提交偏移量,但是禁用 enable.auto.commit
并自己调用 commit
很可能会导致更多频繁提交。
默认情况下,Kafka 消费者会定期提交当前偏移量,除非通过禁用 enable.auto.commit
将其关闭。根据文档,您然后负责自己提交偏移量。因此,当我想要 manual 控制时,这似乎是可行的方法,但是 documentation 还提到了 stored 偏移量并且如果你想要手动控制,你应该禁用 enable.auto.offset.store
并使用 rd_kafka_offsets_store()
并保持自动提交不变。
有人可以解释为什么后一种方法更受欢迎吗?禁用自动提交应该具有完全相同的效果?
使用 enable.auto.commit=true
librdkafka 将定期、重新平衡和消费者关闭时为每个分区提交最后存储的偏移量。
此处使用的偏移量取自内存中的偏移量存储。本店将在enable.auto.offset.store=true
.
如果您设置了 enable.auto.offset.store=false
,您可以通过 rd_kafka_offsets_store()
.
这优于禁用 enable.auto.commit
,因为您不必自己重新实现定期调用提交,而是可以依赖已经内置的逻辑。
您可以 手动控制 是否以任何一种方式提交偏移量,但是禁用 enable.auto.commit
并自己调用 commit
很可能会导致更多频繁提交。