Dies soll eine lose Reihe werden, die für die praktische und einfache Einführung in Apache Kafka verwendet werden kann. Ich werde Kafka kennenlerne und euch mitnehmen. Hier sollen vor allem Ansätze im Fokus stehen, die euch schneller an Kafka heranführen. Informationen und Hintergründe zu Architektur und zu den Begrifflichkeiten möchte ich euch im Doing erklären. Im Rahmen dieser Reihe möchte ich zeigen, wie Nachrichten über Kafka an andere Systeme übermittelt werden können. Das Tutorial richtet sich vor allem an Personen die Kafka einfach ausprobieren wollen oder einzelne praktische Dinge nachschlagen wollen. Für Architektur und tiefere Hintergründe findet ihr auf der offizielen Seite genügend und gute Informationen.
Ich werde dies hauptsächlich am Beispiel Java zeigen. Kafka ist selbst in Scala (JVM) und Java geschrieben. Allerdings möchte ich in weiteren Artikeln auch auf Python und Rust eingehen und hierfür Beispiele zeigen. Für verschiedene Sprachen existieren hier auch Clients. Sämtliche Code-Beispiele werde ich per Github veröffentlichen, so dass ihr diese vollständig nachvollziehen könnt. Der Link dazu findet sich dann am Ende der jeweiligen Kapitel. Generell werde ich mich bemühen, die Befehle Plattformunabhängig darzustellen. Wenn Abhängigkeiten bestehen, werde ich diese erwähnen.
Installation
Vorraussetzung für Apache Kafka ist eine bereits vorhandene, aktuelle, Installation der JRE.
Holt euch Kafka von der offizielen Seite. In den tar.gz finden sich die notwendigen Befehle unter bin/ für Linux als auch bin/windows/ Windows. Ich empfehle für das Testen von Kafka einen Unterordner auf dem System abzulegen, den ihr nach dem Test auch wieder löschen könnt.
Entpackt die verpackte Datei.
tar xfz kafka_2.13-2.8.0.tgz
Unter Windows könnt ihr z. B. 7-Zip verwenden.
Starten von Kafka
Ihr werdet mit einer Konsole arbeiten müssen. Öffnet unter Linux daher eine Konsole mit einer Shell wie z. B. Bash. Unter Windows die Powershell. Wechselt über euer Terminal in das Verzeichnis in dem die Kafka Verzeichnisses liegen. Darunter werdet ihr folgende Verzeichnisses finden:
bin config libs LICENSE licenses logs NOTICE site-docs
Kafka benötigt Zookeeper. Das ist ebenfalls ein Apache Projekt. Das wird für verteilte Anwendungen in der Cloud/Cluster verwendet. Dies starten wir zuerst.
./bin/zookeeper-server-start.sh config/zookeeper.properties
.\bin\windows\zookeeper-server-start.bat config\zookeeper.properties
Anschließend starten wir Apache Kafka.
./bin/kafka-server-start.sh config/server.properties
.\bin\windows\kafka-server-start.bat .\config\server.properties
Über Topics, Producer und Consumer
Systeme, die über Kafka Nachrichten an andere Anwendungen weiterreichen wollen, also selbst produzieren, werden Producer genannt. Empfänger die Informationen empfangen, also konsumieren, werden als Consumer bezeichnet. Nachrichten beziehen sich auf ein Thema, das Topic. Consumer müssen solch ein Topic abonnieren, um dann Nachrichten daraus lesen zu können.
Topic anlegen
Damit ihr Nachrichten produzieren und konsumieren könnt, müsst ihr ein Topic anlegen.
./bin/kafka-topics.sh --zookeeper localhost:2181 --create --partitions1 --replication-factor 1 --topic "test-topic"
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --create --partitions 1 --replication-factor 1 --topic "test-topic"
Nachrichten versenden und empfangen
Standardmäßig empfangen Consumer nur neue Nachrichten, während sie aktiv laufen. Daher starten wir den Consumer zuerst. Es ist übrigens kein Problem, das mehrere Consumer oder Producer gleichzeitig ein Topic auslesen oder füllen.
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topict
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic
Folgenden Befehl verwendet ihr, dann um einen Producer zu starten und um Nachrichten zu versenden:
./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test-topic
Anschließend könnt ihr im Terminal eure Nachrichten eingeben.
>Test
>Hallo Welt
>
Der Consumer produziert dann folgende Ausgabe:
Test
Hallo Welt
Zusammenfassung der Einführung zu Apache Kafka
Wir haben nun die erste Nachricht über Kafka produziert und empfangen. Das gibt damit schon einen guten EInblick in dem was Apache Kafka macht. Das werden wir ausbauen.
Im nächsten Teil werden wir in Java ebenfalls Nachrichten versenden und empfangen, sowie ein Topic erstellen.