🌐 HTTP Resilience
Polly v8, retry, circuit breaker, timeout e bulkhead para chamadas HTTP resilientes
Em sistemas distribuídos, chamadas HTTP vão falhar. Resilience não é opcional — é requisito. O .NET 8 integra Polly v8 via
Microsoft.Extensions.Http.Resilience. Por que Resilience?
Chamadas HTTP entre microserviços são inerentemente instáveis. Rede, DNS, deploy, GC pause — qualquer coisa pode causar falha transitória. Sem resilience, uma falha em cascata pode derrubar todo o sistema.
Pipeline de Resilience
No Polly v8, estratégias são compostas em um pipeline. A ordem importa — cada camada envolve a próxima:
| Estratégia | O que faz | Quando usar |
|---|---|---|
| Retry | Repete a chamada N vezes com backoff | Falhas transitórias (503, timeout, network error) |
| Circuit Breaker | Abre o circuito após muitas falhas consecutivas | Proteger contra serviço externo degradado |
| Timeout | Cancela a chamada após tempo limite | Evitar threads bloqueadas indefinidamente |
| Bulkhead | Limita chamadas concorrentes ao serviço | Isolar recursos entre consumidores |
| Fallback | Retorna valor alternativo em caso de falha | Degradação graciosa (cache, default) |
| Hedging | Envia request paralelo se o primeiro demora | Latência crítica (P99 optimization) |
❓ Qual a diferença entre Polly v7 e Polly v8?
Polly v8 é uma reescrita completa. Usa
ResiliencePipeline em vez de Policy. Estratégias são compostas via builder pattern (new ResiliencePipelineBuilder()). É thread-safe por design, suporta CancellationToken nativamente, e se integra com Microsoft.Extensions.Http.Resilience para HttpClient.