从我对Kafka消费者配置的阅读中,我的理解是,如果我设置这两个属性,那么在我的消费者的启动时,我将始终消耗最早的偏移量
enable.auto.commit = false
auto.offset.reset = earliest
虽然这在我第一次启动应用程序时有效,但下次重新启动它时不会从头开始消耗
相反,我需要做的是将我的group.id
更改为新的,然后它将从最早的偏移恢复。
可能会有其他一些提交进行吗?
更新
在我看来,这是我正在使用的Camel Kafka组件的问题。
org.apache.camel.component.kafka.KafkaConsumer
类具有此逻辑
if (endpoint.isAutoCommitEnable() != null && !endpoint.isAutoCommitEnable()) {
if (processed >= endpoint.getBatchSize()) {
consumer.commitSync();
processed = 0;
}
}
通过我的阅读看起来每次auto commit enable为false时它都会提交偏移量。 这是Camel Kafka组件的一个特性,即使启用了自动提交,它也会在x个消息后同步
答案 0 :(得分:3)
Your understanding sounds correct.
Kafka 0.9 has both "Old" and "New" consumer configs. This configuration property changed between them.
auto.commit.enable = false
enable.auto.commit = false
https://kafka.apache.org/documentation#consumerconfigs
On startup it should be logging its configuration as well, so verify there.
2016-10-06 14:19:41,725 INFO [org.apache.kafka.clients.consumer.ConsumerConfig:165] - ConsumerConfig values:
group.id = service
bootstrap.servers = [kafka:9092]
enable.auto.commit = false
auto.offset.reset = latest