2014-07-15 4 views
5

Ich muss die Nachrichten in einem bestimmten Zeitraum aus einem Kafka-Thema lesen. Die Lösung, die ich mir vorstellen kann, besteht darin, zuerst den größten Offset für den Anfang des Zeitbereichs herauszufinden und dann die Nachrichten so lange zu konsumieren, bis die Offsets aller Partitionen nach dem Ende des Zeitbereichs liegen. Gibt es einen besseren Ansatz zur Lösung dieses Problems? Vielen Dank!Wie sollen wir die Kafka-Themen in einem bestimmten Zeitbereich lesen?

Antwort

0

Was meinen Sie mit "Zeitbereich"?

Zeitbereich der Nachrichten in der Warteschlange oder Zeitstempel in den Nachrichten? :-)

Was würde ich in Erwägung ziehen, Kafka Streams und windowed Stream zu verwenden und Nachrichten aus dem Stream mit der Annahme, dass der aktuelle Zeitstempel der Nachricht aus dem Bereich zu nehmen, nehmen Sie dann Nachricht, andernfalls ignorieren Sie es einfach .

Auf der anderen Seite, wenn Sie Zeitstempel in der Nachricht betrachten, dann kleine Erweiterung der Stream (in java DSL. Filter() -Methode) wirklich gut filtern Nachrichten für Sie. Sie müssen nur ein gutes Prädikat formulieren.

Siehe: Kafka Streams (Confluent) und Kafka Streams (Apache)