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

标签 java apache-kafka apache-kafka-streams

我试图了解 的行为卡夫卡流与偏移提交有关。 Streams 手动提交偏移量,因为在 Streams 中将自动提交设置为“false”。如果我保留 commit.interval.ms = 0 怎么办? ,流是否可以正常工作?

最佳答案

如果设置 commit.interval.ms = 0 Kafka Streams 将“尽快”提交。在实现中,有一个 poll-process-loop 检查是否需要提交。如果设置 commit.interval.ms = 0此检查将评估为 true每次,因此每次都会发生提交。

检查提交条件的时间是内部实现细节,并且没有公共(public)契约(Contract)多久检查一次条件。请注意,不建议过于频繁地提交,因为它会给 Kafka Streams 客户端和代理带来额外的负载,因为提交是同步操作而不是免费的。

来自评论:

We want to check whether we can store commits in external db..so we want to know can we achieve offset commit management solely on db side



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

关于java - 如果我在kafka流中设置commit.interval.ms =的值,它是否能够提交偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51782515/

相关文章:

java - 在某种情况下避免 Java 类之间依赖关系的最佳实践?

java - 使用连接或嵌套子查询更新 Hibernate (HQL)

java - Jersey 不解码 Java 泛型类型

java - kafka消费者组线程的线程顺序在每次启动时都不同

java - org.apache.kafka.streams.examples.wordcount.WordCountDemo 不会终止

apache-kafka - Kafka 流处理器上下文中的周期性 NPE

java - 在这种情况下如何向文件名添加特殊字符

java - 为什么 Kafka Direct Stream 会为每条消息创建一个新的解码器?

监控 Kafka 消费者滞后

apache-kafka - 如果zookeeper.set.acl设置为true,Kafka不会启动