Skip to content

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.

Notifications You must be signed in to change notification settings

ismaelalvesgit/node-consumer-kafka

Repository files navigation

🛠️ Node Consumer Kafka

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.

NodeJS TypeScript Apache Kafka PowerShell


🚀 Objetivo

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.


⚙️ Tecnologias Utilizadas

  • 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.

▶️ Como rodar o projeto

Pré-requisitos

  • Node.js
  • Docker e Docker Compose
  • Mysql (caso não use Docker)

1. Clone o repositório:

git clone https://github.com/ismaelalvesgit/node-consumer-kafka.git

2. Navegue até o diretório do projeto:

cd node-consumer-kafka

3. Instale as dependências:

npm install

4. Com docker:

docker-compose up -d

5. Executando...:

npm run dev

ou

npm run dev all

🛠️ Uso

Este projeto depende de outro repositório: node-horizontal-api Certifique-se de que ele esteja configurado corretamente.


📰 Consumers

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

📈 Monitoramento & Observabilidade

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

🚀 Tipos de deploys pre-configurados

🐳 Docker

docker build -t node-consumer-kafka .
docker run node-consumer-kafka

Helm

Deixei configurado o helm para que seja possível trabalhar com kubernetes.

1. Helm DEPLOY types

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>

2. Helm Values

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
        

📫 Contribuições

Sinta-se à vontade para abrir issues ou enviar pull requests. Sugestões são sempre bem-vindas!


🤓 Contato

Desenvolvido por: Ismael Alves 🤓🤓🤓

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published