Repositório público

SMS Manager

Importar CSV não pode travar a API Nest. A campanha persiste e publica na fila RabbitMQ; consumidores em TypeScript, Go ou Rust gravam o resultado no Mongo. A API não espera a operadora.

Repositório

Desacoplamento da campanha
Desacoplamento da campanha CSV entra na API Nest, que persiste em PostgreSQL e publica na fila RabbitMQ. Consumidores em TypeScript, Go ou Rust, no mesmo contrato, registram o resultado no MongoDB. A API não bloqueia no ritmo da operadora. CSV upload API Nest campanha Postgres persistência API → fila Fila RabbitMQ TS Go Rust mesmo contrato Mongo resultado API não espera a operadora

CSV na API Nest com persistência Postgres; publicação na fila; consumidores no mesmo contrato gravam no Mongo. A API não espera a operadora.

Problema

Campanhas de SMS partem de arquivos CSV, usuários, empresas e autenticação entre serviços. Validar e persistir no mesmo processo que dispara milhares de mensagens acopla a API ao ritmo da operadora e da fila.

Restrições

O ambiente precisa ser reproduzível. Autenticação entre serviços não pode depender de JWT opaco sem revogação. Consumidores em mais de uma linguagem existem para comparar o mesmo contrato de mensageria.

Decisão

Sete aplicações: APIs NestJS de usuários/autenticação e de empresas/campanhas; consumidores equivalentes em Node.js/TypeScript, Go e Rust; provisionador declarativo de exchanges, filas e bindings; gerador de massa CSV. PostgreSQL/TypeORM para dados relacionais na API; MongoDB para resultado do consumo; Redis para cache de token opaco (revogável); gRPC para autenticação entre serviços; RabbitMQ com exchanges topic para os lotes. A API publica e segue sem bloquear no ritmo da operadora.

Estado atual

Repositório público com Docker Compose para PostgreSQL, MongoDB, Redis e RabbitMQ. A arquitetura separa domínio, aplicação e infraestrutura nos contextos de usuários, autenticação e empresas; os três consumidores implementam o mesmo contrato de mensagem.

Limitações

É um artefato de estudo e operação local de mensageria, não um produto comercial com SLA de operadora. Os três consumidores demonstram o contrato; não afirmam que as três linguagens rodam juntas em produção do autor.