In der heutigen Microservices- und ereignisgesteuerten Architektur ist Apache Kafka der De-facto-Standard für Streaming-Anwendungen. Die Einrichtung von Kafka für die lokale Entwicklung in Verbindung mit Ihrer Spring Boot-Anwendung kann jedoch knifflig sein, insbesondere wenn es darum geht, es lokal auszuführen.
Die Spring-Kafka Maven-Bibliothek bietet Unterstützung für die Kafka-Integration. Um mit Spring-Kafka zu arbeiten, müssen wir eine Verbindung zur Kafka-Instanz herstellen. Typischerweise würden wir während der Entwicklung einfach eine lokale Kafka-Instanz ausführen und diese verwenden. Aber mit Docker Desktop und Containern ist die Einrichtung viel einfacher als das Ausführen einer lokalen Kafka-Instanz. Dieser Artikel führt uns durch die Schritte zur Einrichtung des lokalen Kafka-Containers mit der Spring Boot-Anwendung.
Voraussetzungen
- Wir müssen Docker Desktop einrichten. Dazu können wir uns auf diesen Artikel beziehen.
- Eine Spring-Kafka-Anwendung mit konfiguriertem Paket.
Kafka-Container ausführen
Um den Kafka-Container auszuführen, verwenden wir zunächst die folgende Docker-Compose-Datei:
version'3'
services
zookeeper
image confluentinc/cp-zookeeper latest
environment
ZOOKEEPER_CLIENT_PORT2181
ports
"2181:2181"
kafka
image confluentinc/cp-kafka latest
environment
KAFKA_ZOOKEEPER_CONNECT zookeeper2181
KAFKA_ADVERTISED_LISTENERS PLAINTEXT //localhost9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1
ports
"9092:9092"
depends_on
zookeeper
Diese Docker-Compose-Datei enthält die Konfigurationen zum Herunterladen des Kafka-Containers und seiner Abhängigkeit, des Zookeeper-Containers. Zookeeper verwaltet Kafka-Broker-Knoten im Cluster; weitere Details dazu finden Sie in diesem Artikel.
Zur Registrierung der Container mit Docker Desktop verwenden wir den folgenden Befehl:
docker-compose up -d
Dies lädt die erforderlichen Images herunter und startet die Container, und sobald die Container gestartet sind, können Sie die Container in Docker Desktop wie folgt sehen:
Jetzt, da der Kafka-Container aktiv ist, können wir die erforderlichen Topics mit der Docker Desktop-Konsole erstellen, indem wir den folgenden Befehl verwenden:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Jetzt, da der Container aktiv ist und die erforderlichen Vorbedingungen erfüllt sind, können wir die Spring Boot-Anwendung starten. Für die Spring Boot-Anwendung konfigurieren Sie die Kafka-Bootstrap-Adresse wie folgt:
kafka.bootstrapAddress=localhost:9092
Wenn wir die Spring Boot-Anwendung starten, sollten wir die Verbindungsprotokolle mit Kafka sehen, abhängig vom Typ der Spring Boot-Anwendung, ob es sich um einen Produzenten oder Konsumenten handelt.
Indem wir die im Artikel beschriebenen Schritte befolgen, richten wir eine lokale Entwicklungsumgebung unter Verwendung eines Kafka-Containers und einer Spring Boot-Anwendung ein.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application