Ich versuche derzeit, einfach Nachrichten von einem Thema auf einem Kafka-Cluster zu einem anderen zu streamen (Remote -> Lokaler Cluster).
Die Idee ist, sofort Kafka-Streams zu verwenden, damit wir nicht die tatsächlichen Nachrichten auf dem lokalen Cluster replizieren müssen, sondern nur die "Ergebnisse" der Verarbeitung von Kafka-Streams in unsere Kafka-Themen übernehmen.Streamen von Nachrichten von einem Kafka-Cluster zu einem anderen
Nehmen wir an, die WordCount-Demo ist auf einer Kafka-Instanz auf einem anderen PC als meinem. Ich habe auch eine Kafka-Instanz, die auf meinem lokalen Rechner läuft.
Jetzt möchte ich die WordCount Demo auf dem Thema ("remote") laufen lassen, die die Sätze enthält, welche Wörter gezählt werden sollen.
Die Zählung sollte jedoch in ein Thema in meinem lokalen System anstatt in ein "Remote" -Thema geschrieben werden.
Ist so etwas mit der Kafka-Streams-API machbar?
Zum Beispiel
val builder: KStreamBuilder = new KStreamBuilder(remote-streamConfig, local-streamconfig)
val textLines: KStream[String, String] = builder.stream("remote-input-topic",
remote-streamConfig)
val wordCounts: KTable[String, Long] = textLines
.flatMapValues(textLine => textLine.toLowerCase.split("\\W+").toIterable.asJava)
.groupBy((_, word) => word)
.count("word-counts")
wordCounts.to(stringSerde, longSerde, "local-output-topic", local-streamconfig)
val streams: KafkaStreams = new KafkaStreams(builder)
streams.start()
Vielen Dank
- Tim
Vielen Dank Matthias, gut zu wissen! –
Wie kann man die Nachrichten am besten synchron abrufen? Nur die '.get()' Methode für jede Nachricht aufrufen scheint ein bisschen "hacky". Gibt es dafür eine Eigenschaft? –
Die Verwendung von 'get()' ist korrekt. –