En la arquitectura actual de microservicios y basada en eventos, Apache Kafka es el estándar para aplicaciones de streaming. Sin embargo, configurar Kafka para el desarrollo local junto con tu aplicación de Spring Boot puede ser complicado, especialmente al configurarlo para que se ejecute localmente.
La aplicación de Spring Boot proporciona soporte para la integración de Kafka a través del paquete maven spring-kafka. Para trabajar con spring-kafka, necesitamos conectarnos a la instancia de Kafka. Típicamente, durante el desarrollo, solo ejecutaríamos una instancia local de Kafka y construiríamos contra ella. Pero con Docker Desktop y contenedores, las cosas son mucho más fáciles de configurar que ejecutar una instancia local de Kafka. Este artículo nos guía a través de los pasos para configurar el contenedor local de Kafka con la aplicación de Spring Boot.
Requisitos previos
- Necesitamos configurar Docker Desktop. Para hacerlo, podemos consultar este artículo.
- Aplicación de Spring Boot con el paquete spring-kafka configurado.
Ejecutando el Contenedor de Kafka
Para ejecutar el contenedor de Kafka, primero utilizaremos el siguiente archivo 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
Este archivo docker-compose contiene las configuraciones para extraer el contenedor de Kafka y su dependencia, el contenedor de Zookeeper. Zookeeper gestiona los nodos del broker de Kafka en el clúster; podemos encontrar más detalles al respecto en este artículo.
Para registrar los contenedores con Docker Desktop, utilizaremos el siguiente comando:
docker-compose up -d
Esto extraerá las imágenes requeridas y lanzará los contenedores, y una vez que los contenedores estén en funcionamiento, podrás ver los contenedores en Docker Desktop como se muestra a continuación:
Ahora que el contenedor de Kafka está en funcionamiento, podemos crear los temas requeridos utilizando la consola de Docker Desktop con el siguiente comando:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Ahora que el contenedor está en funcionamiento y se han realizado los requisitos previos necesarios, podemos lanzar la aplicación Spring Boot. Para la aplicación Spring Boot, configura la dirección de inicio de Kafka como se muestra a continuación:
kafka.bootstrapAddress=localhost:9092
Cuando lanzamos la aplicación Spring Boot, deberíamos ver los registros de conexión con Kafka, dependiendo del tipo de aplicación Spring Boot, ya sea productor o consumidor.
Siguiendo los pasos descritos en el artículo, configuramos un entorno de desarrollo local utilizando un contenedor de Kafka y una aplicación Spring Boot.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application