我试图理解Kafka流与偏移提交相关的行为。当“自动提交”设置为“0”时,手动提交流偏移量 false “在溪流中。如果我留下呢 commit.interval.ms = 0 ,流是否正常工作?
false
commit.interval.ms = 0
hxzsmxv21#
如果你设置 commit.interval.ms = 0 Kafka将“尽快”作出承诺。在实现中,有一个轮询进程循环,用于检查是否需要提交。如果你设置 commit.interval.ms = 0 这张支票的价值是 true 每一次都会发生,因此每次都会发生。当检查提交条件时,提交条件是一个内部实现细节,并且没有公共契约,检查条件的频率是多少。注意,不建议过于频繁地提交,因为它会给kafka streams客户端和代理程序带来额外的负载,因为提交是一个同步操作,不是免费的。从评论中:我们想检查是否可以在外部数据库中存储提交,所以我们想知道是否可以在数据库端单独实现偏移提交管理使用streams api,不能在外部db中存储偏移量。kafka streams使用kafka的组管理和提交api,您不能更改它。
true
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
2条答案
按热度按时间hxzsmxv21#
如果你设置
commit.interval.ms = 0
Kafka将“尽快”作出承诺。在实现中,有一个轮询进程循环,用于检查是否需要提交。如果你设置commit.interval.ms = 0
这张支票的价值是true
每一次都会发生,因此每次都会发生。当检查提交条件时,提交条件是一个内部实现细节,并且没有公共契约,检查条件的频率是多少。注意,不建议过于频繁地提交,因为它会给kafka streams客户端和代理程序带来额外的负载,因为提交是一个同步操作,不是免费的。
从评论中:
我们想检查是否可以在外部数据库中存储提交,所以我们想知道是否可以在数据库端单独实现偏移提交管理
使用streams api,不能在外部db中存储偏移量。kafka streams使用kafka的组管理和提交api,您不能更改它。
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