BackendConcluído2025

Gateway com Mensageria Assíncrona

Gateway de API com roteamento entre microsserviços e processamento assíncrono via RabbitMQ, incluindo retry policy.

Visão Geral

Gateway de API construído com NestJS que atua como ponto único de entrada para microsserviços. Utiliza RabbitMQ para processamento assíncrono de mensagens com retry policy e dead-letter queues. O Redis é usado para cache de respostas e gerenciamento de sessões.

Problema Resolvido

Microsserviços precisam de um ponto de entrada unificado que gerencie autenticação, rate limiting e roteamento, além de processar operações longas de forma assíncrona sem bloquear o cliente.

Objetivos

Centralizar o roteamento de requisições entre microsserviços
Implementar processamento assíncrono com filas e retry
Garantir resiliência com dead-letter queues
Monitorar a saúde de cada microsserviço

Arquitetura

Gateway como camada única de entrada utilizando o padrão API Gateway. As requisições síncronas são roteadas diretamente para os microsserviços correspondentes. Operações assíncronas publicam mensagens no RabbitMQ, que são consumidas pelos workers com retry policy configurada.

Fluxo dos Dados

Cliente envia requisição → Gateway valida autenticação → roteia para o microsserviço ou publica na fila → worker consome a mensagem → em caso de falha, retry com backoff exponencial → após exceder tentativas, mensagem vai para dead-letter queue.

Funcionalidades

Roteamento inteligente de requisições
Processamento assíncrono com RabbitMQ
Retry policy com backoff exponencial
Dead-letter queue para mensagens com falha
Cache distribuído com Redis
Rate limiting por cliente
Health check dos microsserviços
Logs centralizados

Tecnologias

NestJS
RabbitMQ
Redis
TypeScript
Docker

Desafios

Configurar corretamente as políticas de retry sem perder mensagens
Garantir a entrega ordenada de mensagens quando necessário
Gerenciar timeouts entre o gateway e os microsserviços

Aprendizados

Domínio de padrões de mensageria assíncrona, configuração de RabbitMQ em produção, e estratégias de resiliência para sistemas distribuídos.

Próximos Passos

Implementar service discovery dinâmico
Adicionar circuit breaker com Resilience4j
Criar dashboard de monitoramento das filas

Gostou do projeto?

Vamos conversar sobre como posso ajudar no seu próximo projeto.