Nell’architettura a microservizi e basata su eventi di oggi, Apache Kafka è il de facto per le applicazioni di streaming. Tuttavia, configurare Kafka per lo sviluppo locale in concomitanza con la tua applicazione Spring Boot può essere complicato, specialmente quando si tratta di configurarlo per l’esecuzione locale.
La applicazione Spring Boot fornisce supporto per l’integrazione con Kafka tramite il pacchetto maven spring-kafka. Per lavorare con spring-kafka, dobbiamo connetterci all’istanza di Kafka. Tipicamente, durante lo sviluppo, eseguiremmo un’istanza locale di Kafka e ci costruiremmo contro. Ma con Docker Desktop e i container, le cose sono molto più facili da configurare rispetto all’esecuzione di un’istanza locale di Kafka. Questo articolo ci guida attraverso i passaggi per configurare il container Kafka locale con l’applicazione Spring Boot.
Prerequisiti
- Dobbiamo configurare Docker Desktop. Per farlo, possiamo fare riferimento a questo articolo.
- Applicazione Spring Boot con pacchetto spring-kafka configurato.
Esecuzione del Container Kafka
Per eseguire il container Kafka, utilizzeremo prima il seguente file docker-compose:
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
Questo file docker-compose contiene le configurazioni per scaricare il container Kafka e la sua dipendenza, il container Zookeeper. Zookeeper gestisce i nodi broker di Kafka nel cluster; ulteriori dettagli su questo argomento sono disponibili in questo articolo.
Per registrare i container con Docker Desktop, utilizzeremo il seguente comando:
docker-compose up -d
Questo comando scaricherà le immagini richieste e avvierà i container e, una volta avviati i container, sarà possibile visualizzarli in Docker Desktop come segue:
Ora che il container Kafka è attivo, possiamo creare i topic necessari utilizzando la console di Docker Desktop con il seguente comando:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Ora che il container è attivo e sono stati eseguiti i prerequisiti necessari, possiamo avviare l’applicazione Spring Boot. Per l’applicazione Spring Boot, configurare l’indirizzo di bootstrap di Kafka come segue:
kafka.bootstrapAddress=localhost:9092
Quando avviamo l’applicazione Spring Boot, dovremmo vedere i log per la connessione con Kafka, a seconda del tipo di applicazione Spring Boot, che sia un produttore o un consumatore.
Seguendo i passaggi indicati nell’articolo, abbiamo impostato un ambiente di sviluppo locale utilizzando un container Kafka e un’applicazione Spring Boot.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application