Este projeto foi criado para práticas pessoais com Node.js e consumo de mensagens via Apache Kafka. A proposta é aplicar conceitos de processamento assíncrono, desacoplamento e arquitetura orientada a eventos.
Desenvolver um consumidor Kafka robusto e reutilizável, com foco em escalabilidade, organização e testes. Ideal para pipelines de dados, eventos distribuídos e microserviços.
- Node.js: Ambiente de execução JavaScript no servidor.
- TypeScript: Superset do JavaScript que adiciona tipagem estática.
- Axios: Axios é um cliente HTTP baseado-em-promessas para o node.js
- Jest: Framework de testes em JavaScript.
- Docker: Plataforma para criação e gerenciamento de containers.
- Kubernetes: Implantações em grande escala.
- Helm: Implantações em grande escala com kubernetes.
- CLI: Interface de linha de comando para execução de jobs.
Pré-requisitos
- Node.js
- Docker e Docker Compose
- Mysql (caso não use Docker)
git clone https://github.com/ismaelalvesgit/node-consumer-kafka.git
cd node-consumer-kafka
npm install
docker-compose up -d
npm run dev
ou
npm run dev all
Este projeto depende de outro repositório: node-horizontal-api Certifique-se de que ele esteja configurado corretamente.
A utilização dos consumer´s deste projeto e feitar por CLI segue abaixo a lista de commdandos e suas funcionalidades
Name | Description | execute |
---|---|---|
list | Listagem de todos os possiveis consumer´s | npm run dev list |
async-create-product | Execução do consumer de criação de produtos | npm run dev async-create-product |
async-create-category | Execução do consumer de criação de categorias | npm run dev async-create-category |
all | Execução de todos os consumer´s cadastrados | npm run dev all |
Para garantir a confiabilidade e performance da aplicação, é recomendada a integração com ferramentas de APM (Application Performance Monitoring). Isso permite acompanhar o desempenho dos consumidores Kafka, identificar gargalos e receber alertas sobre falhas em tempo real.
✅ Benefícios:
- ⏱️ Análise de tempo de processamento por tópico
⚠️ Detecção de falhas silenciosas e exceções não tratadas- 📊 Métricas de throughput e latência
- 🔍 Tracing distribuído (ideal para arquiteturas baseadas em eventos)
- 🔔 Alertas proativos com base em métricas personalizadas
docker build -t node-consumer-kafka .
docker run node-consumer-kafka
Deixei configurado o helm para que seja possível trabalhar com kubernetes.
Name | Description |
---|---|
SINGLE | O deploy será realizado por kind: Deployment utilizando o comando npm run dev all |
DEPLOYMENT | O deploy será realizado por kind: Deployment utilizando o comando npm run dev <name consumer> |
replicaCount: 1 # Number of pod´s running
image:
repository: ismaelalvesdoc/node-consumer-kafka # Repository name
tag: latest # Version Tag
pullPolicy: Always # Policy of download image
deploy:
type: SINGLE # SINGLE | DEPLOYMENT
env: # Enviroment´s of service (Not encript)
APM_SERVER_URL: "http://localhost:8200" # Name of enviroment and Value of envriroment
secret: # Enviroment´s of service (Encript)
DB_PASSWORD: "admin" # Name of enviroment and Value of envriroment
jobs:
- name: create-product # Job name
namespace: # namespace
command: async-create-product # Command to execute
resources: # Resources of pod´s
requests: # Provisined
memory: "700Mi"
cpu: 400m
limits: # Limit of scale vertical
memory: "1Gi"
cpu: 800m
autoscaling: # Auto Scaling (Horizontal)
enabled: true # Auto Scaling enable
minReplicas: 1 # Minimal replica count
maxReplicas: 10 # Maximal replica count
metrics: # Target´s of auto scaling
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70
Sinta-se à vontade para abrir issues ou enviar pull requests. Sugestões são sempre bem-vindas!
Desenvolvido por: Ismael Alves 🤓🤓🤓
- Email: cearaismael1997@gmail.com
- Github: github.com/ismaelalvesgit
- Linkedin: linkedin.com/in/ismael-alves-6945531a0/