Lambda VekRest: consumer kafka via Spring Boot com Docker e Maven. Módulo 3 / Lambda
| Aplicação | Descrição | Link |
|---|---|---|
| VekLambda | Lambda (este projeto) - Consumer Kafka | Este Repositório |
Este projeto não depende de nenhuma outra aplicação para funcionar corretamente
A imagem desta aplicação é atualizada a cada nova tag ou pull request na branch main
Link da imagem no DockerHub: vek03/vekrest-veklambda:latest
| Container | Imagem | Link |
|---|---|---|
| MongoDB | mongo:latest |
https://hub.docker.com/_/mongo |
| OpenSearch | opensearchproject/opensearch:2.4.0 |
https://hub.docker.com/layers/opensearchproject/opensearch/2.4.0/images/sha256-c8681472b70d46e7de61fe770d288a972f84b3f122f3c74ca06ea525264b6fd5 |
| Graylog | graylog/graylog:5.1.5 |
https://hub.docker.com/layers/graylog/graylog/5.1.5/images/sha256-3b6967572e88731eacfa661e6d7ca41da3e259bc5eb041e58fb10e4deb823dcb |
| Zookeeper | confluentinc/cp-zookeeper:7.5.0 |
https://hub.docker.com/layers/confluentinc/cp-zookeeper/7.5.0/images/sha256-d18e7b3a81326dd278a5f2121b29a7f009582e0b0f5552165eb5efc83533a52b |
| Kafka | confluentinc/cp-kafka:7.5.0 |
https://hub.docker.com/layers/confluentinc/cp-kafka/7.5.0/images/sha256-69022c46b7f4166ecf21689ab4c20d030b0a62f2d744c20633abfc7c0040fa80 |
| Variável | Descrição | Exemplo |
|---|---|---|
KAFKA_BROKERS |
Endereço do broker Kafka | kafka:9092 |
KAFKA_REPLICAS |
Número de réplicas do Kafka | 1 |
KAFKA_PARTITIONS |
Partição do tópico Kafka | 3 |
GRAYLOG_HOST |
Endereço do Graylog | graylog |
GRAYLOG_PORT |
Porta do Graylog | 12201 |
1️⃣ Para baixar a imagem do Docker Hub:
docker pull vek03/vekrest-veklambda:latest2️⃣ Para rodar o container localmente:
docker run -d \
--name veklambda \
-e KAFKA_BROKERS=kafka:9092 \
-e KAFKA_REPLICAS=1 \
-e KAFKA_PARTITIONS=3 \
-e GRAYLOG_HOST=graylog \
-e GRAYLOG_PORT=12201 \
vek03/vekrest-veklambda:latest3️⃣ Alternativamente, você pode adicionar o serviço no seu docker-compose.yml local, descomentando ou adicionando o seguinte trecho:
services:
veklambda:
image: vek03/vekrest-veklambda:latest
hostname: veklambda
container_name: veklambda
environment:
KAFKA_BROKERS: kafka:9092
KAFKA_REPLICAS: 1
KAFKA_PARTITIONS: 3
GRAYLOG_HOST: graylog
GRAYLOG_PORT: 12201
depends_on:
mongodb:
condition: service_healthy
opensearch:
condition: service_healthy
graylog:
condition: service_started
zookeeper:
condition: service_healthy
kafka:
condition: service_healthy4️⃣ Depois de adicionar o serviço em docker-compose.yml, suba os containers:
docker-compose up -d# Clonar
git clone https://github.com/VekRest/vekrest-veklambda-modulo3.git
# Acesse a pasta do projeto
cd vekrest-veklambda-modulo32️⃣ Suba os containers necessários e Rode o projeto na sua IDE de preferência (ou via comando Maven)
# Suba os containers necessários (MongoDB, Redis, OpenSearch, Graylog)
docker-compose up -d
# Agora abra o projeto na sua IDE (IntelliJ, Eclipse, VSCode, etc) e rode a aplicação Spring Boot
# Ou, se preferir, rode via terminal com properties-local:
mvn spring-boot:run -pl spring -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=local"# Dentro da pasta do projeto:
mvn clean package -DskipTests
# Agora faça deploy no Docker local:
docker build -t vekrest/veklambda:latest .
# Descomente as últimas linhas do docker-compose.yml (relacionadas ao veklambda) e rode:
docker-compose up -dOu execute o script .bat (executar_tudo.bat) na pasta .commands para automatizar o processo.
# Após configurar o pom.xml com as informações do Sonar em Properties:
mvn clean install sonar:sonar -Dsonar.token={TOKEN_SONAR}Com a aplicação rodando, você pode enviar mensagens para o tópico Kafka "client.registered" e verificar se o consumer está recebendo as mensagens corretamente.
{
"name": "Vek",
"birth": "2023-01-01",
"address": {
"cep": "03759040",
"state": "SP"
}
}# key
6b6579
# value
7b226e616d65223a2256656b222c226269727468223a22323032332d30312d3031222c2261646472657373223a7b22636570223a223033373539303430222c227374617465223a225350227d7d# Acesse o container do Kafka
docker exec -it kafka bash
# Envie uma mensagem para o tópico "client.registered"
echo '{"name":"Vek","birth":"2023-01-01","address":{"cep":"03759040","state":"SP"}}' | kafka-console-producer --broker-list localhost:9093 --topic client.registered
# Você deve ver a mensagem sendo consumida no console da aplicação VekLambda- Spring Boot → Framework Back-End
- Java → Linguagem de programação
- Maven → Build
- Docker → Containers e virtualização
- GraalVM → Compilação nativa (opcional)
- Docker Hub → Repositório de imagens Docker
- Kafka → Mensageria
- Zookeeper → Gerenciamento do Kafka
- MongoDB → Banco de Dados NoSQL
- OpenSearch e Graylog → Logs da Aplicação
- SonarQube → Qualidade
- Github Actions → CI/CD automatizado
- .bat → Scripts para automatizar processos no Windows
Este projeto tem qualidade analisada pelo SonarQube Cloud. Verifique nos badges!
A esteira CI/CD deste projeto é automatizada via Github Actions. A cada tag criada a esteira é disparada.
# Exemplo: Cria a tag
git tag <version>
# Envia a tag para o repositório remoto
git push origin <version>