2017-08-03 2 views
0

Ich bin neu bei Kafka. Ich habe einen Produzenten mit Java erstellt und einige Nachrichten an ein Thema gesendet. Gibt es eine Möglichkeit, die Anzahl der Nachrichten in einem bestimmten Thema programmgesteuert zu finden.programmatisch finden Kafka Thema Größe

Bitte teilen Sie Ihre Gedanken.

Antwort

0

KafkaConsumer API bietet Schnittstellen, die Ihnen helfen können. Es gibt beginningOffsets(Collection<TopicPartition> partitions) und endOffsets(Collection<TopicPartition> partitions). Sie können diese Methoden für alle Partitionen in Ihrem Zweig aufrufen und dann den Unterschied zwischen Endoffset und Anfangsoffset für jede Themenpartition ermitteln. Dann aggregiere über alle Themenpartitionen. Das sollte Ihnen die Anzahl der Nachrichten in dem Thema geben. (reference)

1

Was sayd Vahid eine Lösung sein könnte, aber Sie können auch die folgende man verwenden:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic --time -1 

dann müssen Sie die Zählwerte summieren.

Beachten Sie bitte, dass meine und vahid-Lösungen nicht funktionieren, wenn die Protokollkomprimierung aktiv ist, da in diesem Fall einige "Lücken" zwischen den Offsets vorhanden sein können. Die Berechnung des Unterschieds liefert daher nicht die Anzahl der Nachrichten .