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

Java 如果我在kafka流中设置commit.interval.ms=的值,它是否能够提交偏移量?,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我试图理解与偏移提交相关的卡夫卡流的行为。当流中的自动提交设置为“false”时,手动执行流提交偏移量。如果我保持commit.interval.ms=0,流是否能正常工作呢?通过将配置参数设置为零毫秒,您试图实现什么?根据官方文档,流的默认值为100毫秒: 注意,如果“processing.guarance”设置为“justice_once”,则默认值为 值为100,否则默认值为30000 从官方卡夫卡流文件- 更新: 根据您的评论,我相信是的,您应该能够将提交存储在外部数据库中,并且提交间隔

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

通过将配置参数设置为零毫秒,您试图实现什么?根据官方文档,流的默认值为100毫秒:

注意,如果“processing.guarance”设置为“justice_once”,则默认值为 值为100,否则默认值为30000

从官方卡夫卡流文件-

更新:

根据您的评论,我相信是的,您应该能够将提交存储在外部数据库中,并且提交间隔配置仍然适用


另外,如果您设置了
commit.interval.ms=0
Kafka Streams将“尽快”提交,请确保查看文档中关于在Kafka之外存储偏移量的含义。在实现中,有一个轮询过程循环,用于检查是否需要提交。如果每次设置
commit.interval.ms=0
,此检查将计算为
true
,因此每次都会执行提交

当检查提交条件时,提交条件是一个内部实现细节,并且没有公共契约,检查条件的频率是多少。注意,不建议过于频繁地提交,因为提交是一个同步操作,而不是免费的,这会给Kafka Streams客户端和代理程序带来额外的负载

从评论中可以看出:


我们想检查是否可以在外部数据库中存储提交。因此,我们想知道是否可以仅在数据库端实现偏移提交管理


使用Streams API,不能在外部数据库中存储偏移量。Kafka Streams使用Kafka的组管理和提交API,您无法对此进行更改。

我们想检查是否可以在外部数据库中存储提交。因此,我们想知道我们是否可以仅在数据库侧实现偏移提交管理您应该将此添加到您的问题中?顺便说一句:正如文档所说:默认值为30000(默认情况下仅禁用一次)。我们不能像在消费者中一样在流中获取当前偏移量吗?流为您处理偏移量管理,并且无法获取已提交的偏移量或更改提交的工作方式。您可以访问每个已处理记录的偏移量:@omi138如果您需要在外部系统中存储偏移量,请随时在