In de microservices en event-driven architectuur van vandaag is Apache Kafka de facto voor streamingtoepassingen. Het opzetten van Kafka voor lokale ontwikkeling in combinatie met je Spring Boot-applicatie kan echter ingewikkeld zijn, vooral bij het configureren om lokaal te draaien.
De spring-kafka maven-pakket biedt ondersteuning voor Kafka-integratie. Om te werken met spring-kafka, moeten we verbinding maken met de Kafka-instantie. Gewoonlijk zouden we tijdens de ontwikkeling gewoon een lokale Kafka-instantie draaien en daartegen bouwen. Maar met Docker Desktop en containers is het veel gemakkelijker op te zetten dan het draaien van een lokale Kafka-instantie. Dit artikel begeleidt ons door de stappen voor het opzetten van de lokale Kafka-container met de Spring Boot-applicatie.
Vereisten
- We moeten Docker Desktop opzetten. Om dit te doen, kunnen we verwijzen naar dit artikel.
- Spring Boot-applicatie met spring-kafka pakket geconfigureerd.
Kafka-container draaien
Voor het draaien van de Kafka-container zullen we eerst het volgende docker-compose-bestand gebruiken:
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
Dit docker-compose-bestand bevat de configuraties om de Kafka-container en zijn afhankelijkheid, de Zookeeper-container, te starten. Zookeeper beheert Kafka-broker nodes in de cluster; verdere details hierover zijn te vinden in dit artikel.
Om de containers te registreren bij Docker Desktop, zullen we de volgende opdracht gebruiken:
docker-compose up -d
Dit zal de benodigde afbeeldingen ophalen en de containers starten, en zodra de containers zijn gestart, kun je de containers in Docker Desktop zien zoals hieronder:
Nu de Kafka-container actief is, kunnen we de benodigde onderwerpen maken met behulp van de Docker Desktop-console met de volgende opdracht:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Nu de container actief is en de vereiste voorwaarden zijn vervuld, kunnen we de Spring Boot-toepassing starten. Voor de Spring Boot-toepassing, configureer het Kafka bootstrap-adres als volgt:
kafka.bootstrapAddress=localhost:9092
Wanneer we de Spring Boot-toepassing starten, zouden we de logboeken moeten zien voor de verbinding met Kafka, afhankelijk van het type Spring Boot-toepassing, of het nu een producent of een consument is.
Door de stappen te volgen die in het artikel zijn uiteengezet, hebben we een lokale ontwikkelomgeving opgezet met behulp van een Kafka-container en een Spring Boot-toepassing.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application