java—如果我在kafka流中设置commit.interval.ms=的值,它是否能够提交偏移量?

vwoqyblh  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(379)

我试图理解Kafka流与偏移提交相关的行为。当“自动提交”设置为“0”时,手动提交流偏移量 false “在溪流中。如果我留下呢 commit.interval.ms = 0 ,流是否正常工作?

hxzsmxv2

hxzsmxv21#

如果你设置 commit.interval.ms = 0 Kafka将“尽快”作出承诺。在实现中,有一个轮询进程循环,用于检查是否需要提交。如果你设置 commit.interval.ms = 0 这张支票的价值是 true 每一次都会发生,因此每次都会发生。
当检查提交条件时,提交条件是一个内部实现细节,并且没有公共契约,检查条件的频率是多少。注意,不建议过于频繁地提交,因为它会给kafka streams客户端和代理程序带来额外的负载,因为提交是一个同步操作,不是免费的。
从评论中:
我们想检查是否可以在外部数据库中存储提交,所以我们想知道是否可以在数据库端单独实现偏移提交管理
使用streams api,不能在外部db中存储偏移量。kafka streams使用kafka的组管理和提交api,您不能更改它。

y1aodyip

y1aodyip2#

通过将配置参数设置为零毫秒,您想要完成什么?根据官方文档,流的默认值为100毫秒:
注意,如果'processing.guarange'设置为'exactly\u once',则默认值为100,否则默认值为30000。
Kafka的官方文件https://kafka.apache.org/documentation/#streamsconfigs
更新时间:
根据您的评论,我认为是的,您应该能够将提交存储在外部数据库中,并且提交间隔配置仍然适用。
另外,一定要仔细阅读文件中关于在Kafka之外存储补偿的含义-https://kafka.apache.org/20/javadoc/org/apache/kafka/clients/consumer/kafkaconsumer.html#rebalancecallback

相关问题