Na arquitetura de microserviços e orientada a eventos de hoje, o Apache Kafka é o padrão para aplicações de streaming. No entanto, configurar o Kafka para desenvolvimento local em conjunto com sua aplicação Spring Boot pode ser complicado, especialmente ao configurá-lo para rodar localmente.
Aplicação Spring Boot fornece suporte para integração com Kafka através do pacote spring-kafka do Maven. Para trabalhar com spring-kafka, precisamos nos conectar à instância do Kafka. Normalmente, durante o desenvolvimento, apenas rodaríamos uma instância local do Kafka e construiríamos contra ela. Mas com o Docker Desktop e contêineres, as coisas são muito mais fáceis de configurar do que rodar uma instância local do Kafka. Este artigo nos guia pelos passos para configurar o contêiner local do Kafka com a aplicação Spring Boot.
Pré-requisitos
- Precisamos configurar o Docker Desktop. Para isso, podemos consultar este artigo.
- Aplicação Spring Boot com o pacote spring-kafka configurado.
Executando o Contêiner Kafka
Para rodar o contêiner Kafka, primeiro usaremos o seguinte arquivo 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 arquivo docker-compose contém as configurações para puxar o contêiner Kafka e sua dependência, o contêiner Zookeeper. O Zookeeper gerencia os nós do broker Kafka no cluster; podemos encontrar mais detalhes sobre isso neste artigo.
Para registrar os contêineres com o Docker Desktop, usaremos o seguinte comando:
docker-compose up -d
Isso puxará as imagens necessárias e lançará os contêineres, e uma vez que os contêineres estejam lançados, você poderá ver os contêineres no Docker Desktop como abaixo:
Agora que o contêiner Kafka está ativo, podemos então criar os tópicos necessários usando o console do Docker Desktop com o seguinte comando:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Agora que o contêiner está ativo e os pré-requisitos necessários foram realizados, podemos lançar a aplicação Spring Boot. Para a aplicação Spring Boot, configure o endereço bootstrap do Kafka conforme abaixo:
kafka.bootstrapAddress=localhost:9092
Quando lançamos a aplicação Spring Boot, devemos ver os logs de conexão com Kafka, dependendo do tipo de aplicação Spring Boot, se é um produtor ou consumidor.
Seguindo os passos descritos no artigo, configuramos um ambiente de desenvolvimento local usando um contêiner Kafka e uma aplicação Spring Boot.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application