Wir installieren Apache Kafka auf einem Microsoft Windows Server 2019.
Hierzu wird folgendes benötigt
- Java SE Runtime Environment 8 von https://www.oracle.com/java/technologies/javase-jre8-downloads.html
- Apache ZooKeeper von https://zookeeper.apache.org/releases.html
- Apache Kafka von http://kafka.apache.org/downloads.html
Installation von JDK
Von der Seite Java SE Runtime Environment 8 Downloads laden wir das Windows x64 Paket herunter.
Die heruntergeladene Datei jre-8u271-windows-x64.exe führen wir aus. Mit einem Klick auf Install starten wir die Installation.
Die JRE wurde erfolgreich im Verzeichnis C:\Program Files\Java\jre1.8.0_271
installiert.
Danach fügen wir in den Umgebungsvariablen > Systemvariablen JAVA_HOME = C:\Program Files\Java\jre1.8.0_271
hinzu.
Der letzte Schritt ist es der PATH Variable %JAVA_HOME%\bin
hinzuzufügen. Damit ist die Basis-Konfigration abgeschlossen!
Mit der Eingabe java -version
in der Kommandozeile können wir prüfen ob Java generell funktioniert.
Apache ZooKeeper insallieren
Als nächstes steht die Installation von Apache Zookeeper an. Dazu laden wir von der Apache ZooKeeper Downloads Seite die Apache ZooKeeper 3.6.2 herunter.
Danach entpacken wir die Datei in ein beliebiges Verzeichnis. In meinem Fall unter c:\zookeeper
.
Nun gehen wir ins Apache ZooKeeper Config Verzeichnis c:\zookeeper\conf
. Hier erstellen wir von der Datei zoo_sample.cfg
eine Kopie und benennen diese um in zoo.cfg
.
Die zoo.cfg
öffnen wir in Notepad und suchen die Zeile
dataDir=/tmp/zookeeper
Diese Zeile ändern wir um in dataDir=c:\zookeeper
.
Danach fügen wir in den Umgebungsvariablen > Systemvariablen ZOOKEEPER_HOME = c:\zookeeper
hinzu.
Der letzte Schritt ist es der PATH Variable %ZOOKEEPER_HOME%\bin
hinzuzufügen. Damit ist die Basis-Konfigration abgeschlossen!
Um ZooKeeper zu starten, öffnen wir die Kommandozeile und geben im Prompt zkserver
ein.
Und siehe da, Apache ZooKeeper läuft.
Apache Kafka installieren
Zum Start müssen wir uns die letzte Version von Kafka unter https://kafka.apache.org/downloads herunterladen. Ich lade die Version Scala 2.13 – kafka_2.13-2.7.0.tgz herunter.
Anschließend entpacke ich die Datei in das Verzeichnis c:\kafka
.
Im Kafka Config Verzeichnis c:\kafka\config
öffnen wir nun die Datei server.properties
.
Wie suchen nach der Zeile log.dirs=/tmp/kafka-logs
und ändern diese in log.dirs=c:\kafka\kafka-logs
.
Wenn der ZooKeeper auf derselben Maschine läuft als auch unter dem Standard-Port 2181, dann sind keine weiteren Änderungen an der Datei notwendig. Ansonsten muss man die Zeile zookeeper.connect=localhost:2181
ebenfalls anpassen.
Kafka läuft standardmäßig auf dem Port 9092 (der ZooKeeper auf 2181).
Bevor wie den Apache Kafka Server starten, muss sichergestellt sein das der ZooKeeper läuft (siehe vorherigen Abschnitt).
Um Kafka zu starten, öffnen wir die Kommandozeile und wechseln in das Kafka Verzeichnis c:\kafka
. Hier geben wir nun .\bin\windows\kafka-server-start.bat .\config\server.properties
ein und drücken die Enter-Taste.
.\bin\windows\kafka-server-start.bat .\config\server.properties
Nachdem der Kafka gestartet ist, sieht die Kommadozeile ähnlich wie dieser aus:
Apache Kafka is up and running. Perfekt! Nun können wir Topics erstellen und Daten an Kafka schicken oder konsumieren. Das kann per Java, Scala, C#, Python oder in einer anderen Sprache/Tool gemacht werden oder aber via Kommandozeile.
Apache Kafka Topics erstellen
Um Topics zu erstellen öffnen wir erneut eine Kommandozeile und wechseln in das Verzeichnis c:\kafka\bin\windows
.
Topics verwalten wir mit dem Befehl kafka-topics.bat
. Der nachfolgende Befehl ertellt ein Topic mit dem Namen bogazci.
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic bogazci
Kafka Server Test mit einem Apache Kafka Producer und Consumer
Apache liefert einen einfachen Producer und Consumer mit. Um unseren Kafka Server zu testen erstellen wir zunächst mit dem Producer einfache Nachrichten, die anschließend mit dem Consumer abgerufen werden.
Für den Producer starten wir erneut ein neues Konsolenfenster und wechseln in das Verzeichnis c:\kafka\bin\windows
.
Jetzt geben wir den nachfolgenden Befehl ein kafka-console-producer.bat --broker-list localhost:9092 --topic bogazci
.
kafka-console-producer.bat --broker-list localhost:9092 --topic bogazci
Die Konsole lauscht nun auf unsere Eingabe mit >
.
Nun erstellen wir einen Consumer und öffnen hierzu ein weiteres Konsolenfenster und wechseln auch bei diesem in das Verzeichnis c:\kafka\bin\windows
.
Hier geben wir nun nachfolgenden Befehl ein kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic bogazci
.
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic bogazci
Und nun kann man im Producer Fenster Nachrichten eingeben und siehe da, der Consumer holt sie ab und zeigt sie sofort an!
Einige nützliche Befehle gibt es auch noch:
Topics auflisten
kafka-topics.bat --list --zookeeper localhost:2181
Topics löschen
kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
Nachrichten von Beginn an lesen
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic [Topic Name] --from-beginn
So, nun läuft auch unser Apache Kafka Server!