无法使用云卡夫卡流将autoCommitOffset设置为true

时间:2019-04-04 09:09:34

标签: spring-boot apache-kafka kafka-consumer-api apache-kafka-streams spring-cloud-stream

我正在使用Spring-cloud-starter-stream-kafka-1.3.3和带有Spring Boot的spring-cloud-stream连接到Kafka,其中包括典型的Publisher Subscriber用例,在该用例中,我要enable.auto.commit是真的。

服务启动时,我可以看到在控制台上打印了一些Kafka属性(INFO日志),其中列出了所有已应用的属性。我看到此属性的值为false- enable.auto.commit = false,如belolw所示:

auto.commit.interval.ms = 100
enable.auto.commit = false
auto.offset.reset = earliest
check.crcs = true
client.id = consumer-2
connections.max.idle.ms = 540000
    exclude.internal.topics = true
fetch.max.bytes = 52428800
fetch.max.wait.ms = 500
fetch.min.bytes = 1
group.id = conn-dr-group
heartbeat.interval.ms = 3000

我在Spring Doc上读到,如果我们不提供自动提交的属性,则默认情况下将其设置为true-

https://docs.spring.io/autorepo/docs/spring-cloud-stream-binder-kafka-docs/1.1.0.M1/reference/htmlsingle/

但是,当我启动该服务时,该值似乎仍然显示为假。

我尝试在application.properties中提供以下属性,但是仍然解析为false。

spring.cloud.stream.kafka.bindings.input.autoCommitOffset = true

有人知道我们如何获得真正的价值吗?

1 个答案:

答案 0 :(得分:1)

  

spring.cloud.stream.kafka.bindings.input.autoCommitOffset = true

那是另一种性质;它告诉绑定程序在侦听器正常返回后提交偏移量。这比让客户端自己执行提交更具确定性。

活页夹始终重置enable.auto.commit;您可以使用...binder.configuration属性覆盖它,但不建议这样做。