Draft: Sistema de gateway de pagamentos distribuído, baseado em microsserviços, usei esse projeto para estudar implementação de Kafka e Kafka Connect. As APIs são POCs simples.
DLQ (Dead Letter Queue) em ação
- produto: Gerencia produtos, reservas e estoque. Integra com MySQL, Elasticsearch e Kafka.
- process-purchases: Orquestra o fluxo de pedidos, controla duplicidade (idempotência), gerencia filas Kafka, retries e DLQ.
- payment-processing: Realiza o processamento final do pagamento.
O fluxo é totalmente assíncrono, desacoplado e resiliente a falhas, com shutdown gracioso e métricas de monitoramento.
Veja o diagrama UML detalhado em process-purchases/docs/uml.plantuml
.
- Node.js + TypeScript
- Express
- Prisma ORM (MySQL)
- Kafka (Debezium, Kafka Connect)
- Docker Compose
- Elasticsearch
-
Recepção do Pedido
O usuário faz um pedido de pagamento. O sistema verifica duplicidade (últimos 2 minutos) e insere na filaorder_queue
se for válido. -
Orquestração e Idempotência
O serviçoprocess-purchases
consome a fila, garante idempotência via tabela de anti-duplicação e processa o pedido. -
Retries e DLQ
Em caso de erro, o pedido é reprocessado até um limite. Após exceder o máximo de tentativas, vai para a DLQ (payment_dlq
), permitindo análise posterior. -
Processamento Final
O serviçopayment-processing
realiza a etapa final do pagamento.
POST /
— Popula o banco com produtos de exemploPOST /reserve
— Reserva um produtoGET /findAll
— Lista todos os produtos (Elasticsearch)POST /payment
— Envia pedido de pagamento
- Os conectores Kafka e Elasticsearch são configurados via arquivos
.properties
emconfig
. - O projeto depende do Debezium para replicação de dados do MySQL para o Elasticsearch via Kafka Connect.
- O sistema implementa shutdown gracioso e tratamento de erros para garantir resiliência.
- Diagramas e exemplos de payloads estão disponíveis na pasta
docs
e nos arquivosreadme.md
de cada serviço.
- Subir ambiente:
docker-compose up -d
- Rodar migrações:
yarn prisma migrate dev
- Iniciar serviço:
yarn dev
- Acessar Prisma Studio:
yarn prisma studio
**Demonstrações visuais do fluxo do sistema estão disponíveis nos GIFs da pasta