2016-09-12 6 views
2

Ich habe einen Java Kafka Consumer geschrieben. Ich möchte sicherstellen, dass explizit sichergestellt wird, dass nach dem Start des Kafka Consumer nur die Nachrichten gelesen werden, die vom Hersteller ab diesem Zeitpunkt gesendet werden, d. H. Er sollte keine Nachrichten lesen, die der Produzent bereits an Kafka gesendet hat. Kann mir jemand erklären, wie ich das sicherstellen kann? :Kafka Consumer Eigenschaften aus dem maximalen Offset zu lesen

Hier ein Ausschnitt der Eigenschaften I

Properties properties = new Properties(); 
properties.put("zookeeper.connect", zookeeperHost); 
properties.put("group.id", group); 
properties.put("auto.offset.reset","largest"); 
ConsumerConfig consumerConfig = new ConsumerConfig(properties); 
consumerConnector = Consumer.createJavaConsumerConnector(consumerConfig); 

UPDATE Sept14 verwenden:

ich die folgenden Eigenschaften verwenden, so scheint es, dass der Verbraucher in Zeiten von Anfang an liest immer noch, kann jemand Sag mir, was ist jetzt los?

ich Kafka Version bin mit 0.8.2

properties.put("auto.offset.reset","largest"); 
properties.put("auto.commit.enable","false"); 
+1

hast du das schon gemacht. properties.put ("auto.offset.reset", "größter"); –

+0

Sie sollten auch automatisches Commit deaktivieren und niemals manuell committen, da Ihr Konsument in diesem Fall die 'auto.reset.offset' Konfiguration nach dem Neustart ignoriert und stattdessen den Commit-Offset übernimmt. – serejja

+0

@serejja Danke für die Eingabe – tsar2512

Antwort

2

Basierend auf den Antworten oben, so scheint es, dass der richtige Mechanismus ist wie für die Einstellung Eigenschaften des Verbrauchers folgt:

properties.put("auto.offset.reset","largest"); 
properties.put("auto.commit.enable","false"); 

Dies stellt sicher, Lesen von dem maximalen Offset