2016-10-19 227 views
1

從我的卡夫卡消費者的閱讀CONFIGS我的理解是,如果我設置這兩個屬性,然後在啓動我的消費我會一直消耗從最早的偏移卡夫卡0.9:消費從最早的卡夫卡偏移

enable.auto.commit = false 
auto.offset.reset = earliest 

雖然這工作,當我第一次啓動我的應用程序,下次我重新啓動它不會消耗從一開始

而是,我需要做的是將我的group.id更改爲新的,然後它將從最早的抵消。

難道可能還有其他一些承諾正在進行嗎?

更新

看起來對我來說,這是與我使用的駱駝卡夫卡組件有問題。 的org.apache.camel.component.kafka.KafkaConsumer類由我讀了這個邏輯

if (endpoint.isAutoCommitEnable() != null && !endpoint.isAutoCommitEnable()) { 
    if (processed >= endpoint.getBatchSize()) { 
     consumer.commitSync(); 
     processed = 0; 
    } 
} 

這個貌似每次自動提交能是假的,將提交抵消。 這是Camel Kafka組件的一項功能,因爲即使啓用了自動提交,它也會在x條消息後同步

+0

您可以檢查是否有是通過'斌/ kakfa-消費groups.sh'消費者集團承諾而只是要確定,你不這樣做手工在你的客戶端代碼提交,對吧? –

+0

我不做任何手動提交,我的理解是否至少正確? – DJ180

回答

2

您的理解聽起來正確。

卡夫卡0.9擁有「舊」和「新」消費者配置。這個配置屬性在它們之間改變。

auto.commit.enable = false 
enable.auto.commit = false 

https://kafka.apache.org/documentation#consumerconfigs

在啓動時,應當記錄其配置爲好,這樣有驗證。

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 
+0

是的,我確認了。我認爲問題在於我正在使用的Camel Kafka組件 – DJ180

+0

請參閱上述我的發現 – DJ180