Infosistemas
Infosistemas: contrato de falha na mensageria RabbitMQ
Falhas intermitentes entre microsserviços sem contrato para retry, DLQ ou duplicidade. Mais consumidores só empurravam a sobrecarga.
~98% redução de falhas intermitentes nos fluxos críticos
Publicação confirmada, consumo com prefetch controlado, retry com backoff e DLQ por fluxo. Escalar só consumidores fica de fora do desenho.
Contexto
A Infosistemas opera plataformas de gestão para locadoras, frotas e montadoras. O trabalho ocorreu no time de arquitetura, em colaboração com DevOps, SREs e DBAs, entre fevereiro de 2025 e maio de 2026.
Este caso cobre a frente de mensageria. Outras frentes da mesma experiência (segurança de ERP, jornadas de assinatura, integrações fiscais) existem nas fontes, mas não entram aqui como número ou afirmação extra.
Restrições
Os fluxos críticos cruzavam microsserviços. A falha era intermitente: a mesma operação podia completar numa execução e não completar na seguinte. Aumentar concorrência ou prefetch sem critério transferia sobrecarga para consumidores, serviços ou bancos downstream.
Problema
Mensagens deixavam de completar o fluxo esperado. Investigar falha parcial era difícil. Não havia contrato explícito para falha temporária, falha permanente, duplicidade ou poison message.
Decisão
A mensageria foi redesenhada para tornar o comportamento em falha previsível:
- filas duráveis;
- DLQ por fluxo, para mensagem que não deve desaparecer nem repetir sem controle;
- retry com backoff para indisponibilidade temporária;
- idempotência e deduplicação no consumidor, porque entrega duplicada não pode repetir efeito de negócio;
- publisher confirms, para reduzir incerteza na publicação;
- ajuste de prefetch, em vez de abrir concorrência indiscriminada.
Alternativa descartada
Tratar o problema como falta de capacidade (mais consumidores, mais prefetch) sem mudar o contrato de falha. Isso moveria o gargalo e manteria perda ou duplicidade silenciosa.
Implementação
O redesenho colocou esses mecanismos nos fluxos críticos: publicação confirmada, fila durável com prefetch controlado, consumidor idempotente, retry com backoff e DLQ por fluxo. A operação passou a ter um caminho previsível para falha temporária e para falha permanente, em vez de depender de reprocessamento ad hoc.
Resultado
A redução registrada nas falhas intermitentes dos fluxos críticos entre microsserviços foi de aproximadamente 98%. O número descreve esses fluxos após o redesenho, não a operação inteira da empresa nem outras frentes.
Limitações
Métricas de outras frentes ainda pendentes de método ou confirmação ficam de fora. Se a volumetria ou o mapa de microsserviços mudar de forma que DLQ e prefetch deixem de isolar a falha, o tuning precisa ser revisto com telemetria de fila e de consumidores.