Uma API desenvolvida com NestJS para consultas de benefícios, com integração ao Redis, Elasticsearch e RabbitMQ, utilizando Docker Compose para facilitar a configuração e execução dos serviços.
- Consulta de benefícios pelo CPF.
- Armazenamento de dados no Redis para cache.
- Indexação e busca de dados no Elasticsearch.
- Utilização de fila RabbitMQ para processamento assíncrono.
- NestJS
- Redis
- Elasticsearch
- RabbitMQ
- Docker e Docker Compose
Certifique-se de ter os seguintes itens instalados na sua máquina:
- Node.js (v16+)
- npm ou yarn
- Docker (v20+) e Docker Compose
git clone https://github.com/Cosmess/api-busca-beneficios.git
cd api-dados-beneficios
npm install
Crie um arquivo .env
na raiz do projeto e adicione as seguintes variáveis de ambiente:
RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672
REDIS_URL=redis://redis:6379
ELASTICSEARCH_NODE=http://elasticsearch:9200
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=JfoSi0+MUSgZK+Do2ER6
BASE_URL=######
APPUSERNAME=#####
PASSWORD=####
QUEUE=cpfQueue
Explicação das Variáveis:
RABBITMQ_URL
: URL de conexão ao RabbitMQ.REDIS_URL
: URL de conexão ao Redis.ELASTICSEARCH_NODE
: URL do nó do Elasticsearch.ELASTICSEARCH_USERNAME
eELASTICSEARCH_PASSWORD
: Credenciais do Elasticsearch.BASE_URL
: URL base para consulta de dados externos.APPUSERNAME
ePASSWORD
: Credenciais para autenticação na API externa.QUEUE
: Nome da fila RabbitMQ usada para processamento.
Certifique-se de que o Docker está rodando e execute:
docker-compose up --build
Acesse a API no navegador ou em uma ferramenta como Postman:
- URL Base com a pagina de busca: http://localhost:3000
-
- URL Swagger: http://localhost:3000/api-docs
Você pode verificar o status dos serviços individualmente:
-
Redis:
redis-cli -h localhost -p 6379 ping
Resposta esperada:
PONG
-
Elasticsearch:
curl -u elastic:JfoSi0+MUSgZK+Do2ER6 http://localhost:9200
Resposta esperada: JSON com informações do cluster.
-
RabbitMQ (Interface de Gerenciamento): Acesse http://localhost:15672 no navegador.
- Usuário:
guest
- Senha:
guest
- Usuário:
O projeto segue uma arquitetura modular com camadas distintas para responsabilidades específicas:
src/
├── application/ # Casos de uso e lógica de aplicação
├── infrastructure/ # Serviços de infraestrutura (Redis, Elasticsearch, RabbitMQ)
├── interfaces/ # Controllers e DTOs
├── main.ts # Arquivo principal do aplicativo
tests/ # Testes unitários
.env # Arquivo de variáveis de ambiente
npm run test
npx jest tests/nome-do-teste.spec.ts
- NestJS App: A aplicação principal.
- Redis: Cache de dados.
- Elasticsearch: Busca e indexação de documentos.
- RabbitMQ: Gerenciador de filas.
docker-compose up --build