vek03/vekrest-vekconsumer

By vek03

Updated 7 months ago

Consumer VekRest: consumer kafka via Spring Boot com Docker e Maven. Módulo 4 / Consumer 1

Image
Message queues
API management
0

5.2K

vek03/vekrest-vekconsumer repository overview

🧬 Projeto VekRest - VekConsumer - Módulo 4

Consumer VekRest: consumer kafka via Spring Boot com Docker e Maven. Módulo 4 / Consumer 1

ATENÇÃO: VÁ ATÉ OS REPOSITÓRIOS DAS PARTES DO MÓDULO 4 E SIGA AS INSTRUÇÕES DE EXECUÇÃO DO README DE CADA APLICAÇÃO PARA RODAR A APLICAÇÃO COMPLETA!

🧩 PARTES DO MÓDULO 4

AplicaçãoDescriçãoLink
VekProducerProducer (este projeto) - Producer KafkaRepositório VekProducer Módulo 4
VekConsumerConsumer - Consumer Kafka simplesEste Repositório
VekConsumerAPIConsumer REST - Consumer Kafka com API RESTRepositório VekConsumerRest Módulo 4

Este projeto depende das outras duas aplicações (VekProducer e VekConsumerAPI) para funcionar corretamente.

Faça o build no docker das outras aplicações ou utilize as imagens do DockerHub para rodar os containers necessários.

Por último, suba os containers do projeto VekProducer para completar o ambiente.


1.✨ Imagem Docker (DockerHub)

A imagem desta aplicação é atualizada a cada nova tag ou pull request na branch main

Link da imagem no DockerHub: vek03/vekrest-vekconsumer:latest

Utilize 3 containers Kafka para alta disponibilidade (kafka1, kafka2 e kafka3), um para cada Broker. Cada Broker possui 5 partições e 2 réplicas.


1.1 🧩 Containers necessários para rodar a aplicação:


1.2 ⚙ Variáveis de ambiente necessárias para rodar o container:

VariávelDescriçãoExemplo
KAFKA_BROKERSEndereço do broker Kafkakafka1:19092, kafka2:19093, kafka3:19094
GRAYLOG_HOSTEndereço do Grayloggraylog
GRAYLOG_PORTPorta do Graylog12201

1.3 🐳 Como rodar o container

1️⃣ Para baixar a imagem do Docker Hub:

docker pull vek03/vekrest-vekconsumer:latest

2️⃣ Para rodar o container localmente:

docker run -d \
  --name vekconsumer \
    -e KAFKA_BROKERS=kafka1:19092, kafka2:19093, kafka3:19094 \
    -e GRAYLOG_HOST=graylog \
    -e GRAYLOG_PORT=12201 \
  vek03/vekrest-vekconsumer:latest

3️⃣ Alternativamente, você pode adicionar o serviço no seu docker-compose.yml local, descomentando ou adicionando o seguinte trecho:

services:
  vekconsumer:
    image: vek03/vekrest-vekconsumer:latest
    hostname: vekconsumer
    container_name: vekconsumer
    environment:
      KAFKA_BROKERS: kafka1:19092, kafka2:19093, kafka3:19094
      GRAYLOG_HOST: graylog
      GRAYLOG_PORT: 12201
    depends_on:
      mongodb:
        condition: service_healthy
      opensearch:
        condition: service_healthy
      graylog:
        condition: service_started
      zookeeper:
        condition: service_healthy
      kafka1:
        condition: service_healthy
      kafka2:
        condition: service_healthy
      kafka3:
        condition: service_healthy

4️⃣ Depois de adicionar o serviço em docker-compose.yml, suba os containers:

docker-compose up -d

📦 Instalação e Configuração do Ambiente

1️⃣ Clone o projeto na sua máquina e baixe as dependências:
# Clonar
git clone https://github.com/VekRest/vekrest-vekconsumer-modulo4.1.git

# Acesse a pasta do projeto
cd vekrest-vekconsumer-modulo4.1
2️⃣ 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

# Rode o projeto via Maven
3️⃣ (Opcional) Alternativamente, se quiser rodar via container localmente:
# Dentro da pasta do projeto:
mvn clean package -DskipTests

# Agora faça deploy no Docker local:
docker build -t vekrest/vekconsumer:latest .

# Descomente as últimas linhas do docker-compose.yml (relacionadas ao vekconsumer) e rode:
docker-compose up -d

Ou execute o script .bat (executar_tudo.bat) na pasta .commands para automatizar o processo.

4️⃣ (Opcional) Caso deseje, pode rodar o SonarQube localmente
# Após configurar o pom.xml com as informações do Sonar em Properties:
mvn clean install sonar:sonar -Dsonar.token={TOKEN_SONAR}

📨 Como testar o Producer Kafka

Com a aplicação rodando, você pode enviar mensagens para o tópico Kafka "client.updated"

Exemplos de mensagens para enviar ao tópico Kafka
Exemplo de mensagem JSON
{
  "name": "Vek",
  "birth": "2023-01-01",
  "address": {
    "cep": "03759040",
    "state": "SP"
  }
}
Exemplo de mensagem hexadecimal
# key
6b6579

# value
7b226e616d65223a2256656b222c226269727468223a22323032332d30312d3031222c2261646472657373223a7b22636570223a223033373539303430222c227374617465223a225350227d7d
Endpoint REST para enviar mensagens via HTTP POST

Depende do container VekProducer estar rodando corretamente

POST http://localhost:8083/vekrest/vekproducer/v1/client

🧩 Tecnologias Utilizadas

  • Spring Boot → Framework Back-End
  • Java → Linguagem de programação
  • Maven → Build
  • Docker → Containers e virtualização
  • 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

✅ Qualidade (SonarQube)

Este projeto tem qualidade analisada pelo SonarQube Cloud. Verifique nos badges!

SonarQube Cloud


📦 Esteira CI/CD Automatizada com Github Actions

A esteira CI/CD deste projeto é automatizada via Github Actions. A cada tag criada a esteira é disparada.

Para executar a Esteira pelo trigger:
# Exemplo: Cria a tag
git tag <version>

# Envia a tag para o repositório remoto
git push origin <version>

VekConsumer CI/CD Workflow


Postman Collection

Link para download da coleção Postman utilizada nos testes da API: Postman Collection VekRest


Tag summary

Content type

Image

Digest

sha256:97fe30216

Size

201 MB

Last updated

7 months ago

docker pull vek03/vekrest-vekconsumer:v1.0.0