top of page

Resiliência de Chamadas com Polly

O Polly é uma biblioteca que ajuda a adicionar resiliência a chamadas externas em sua aplicação, oferecendo mecanismos como retry, circuit breaker, fallback, e outros padrões de resiliência. Isso é útil quando sua aplicação precisa lidar com falhas temporárias em serviços externos ou redes. Neste exemplo, vamos demonstrar como implementar uma política de retry simples usando Polly.


Bibliotecas:


Para usar a biblioteca Polly, instale o seguinte pacote NuGet no seu projeto:


Install-Package Polly

Código de Exemplo:


using Polly;
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Definindo uma política de retry que tenta 3 vezes com um intervalo de 2 segundos entre tentativas
        var retryPolicy = Policy
            .Handle<HttpRequestException>()
            .WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(2), 
                (exception, timeSpan, retryCount, context) =>
                {
                    Console.WriteLine($"Tentativa {retryCount} falhou. Tentando novamente em {timeSpan.TotalSeconds} segundos...");
                });

        // Fazendo uma chamada HTTP com retry
        HttpClient httpClient = new HttpClient();
        var url = "https://exemplo-api.com/falha";

        try
        {
            await retryPolicy.ExecuteAsync(async () =>
            {
                Console.WriteLine("Fazendo requisição...");
                var response = await httpClient.GetAsync(url);
                response.EnsureSuccessStatusCode();
                Console.WriteLine("Requisição bem-sucedida!");
            });
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Todas as tentativas falharam: {ex.Message}");
        }
    }
}

Explicação do Código:


Neste exemplo, utilizamos o Polly para definir uma política de retry que tenta três vezes, esperando dois segundos entre cada tentativa, quando ocorre uma exceção HttpRequestException. A função WaitAndRetryAsync lida com a lógica de retry e executa a chamada HTTP até que ela seja bem-sucedida ou até que o número máximo de tentativas seja atingido. Se todas as tentativas falharem, a exceção será capturada e exibida no console.


Conclusão:


O Polly é uma poderosa biblioteca para melhorar a resiliência das aplicações, fornecendo um conjunto de padrões de tratamento de falhas, como retry, circuit breaker e fallback. Isso permite que sua aplicação lide melhor com falhas temporárias de rede ou de serviços externos, aumentando a robustez e a confiabilidade.


0 visualização

Posts recentes

Ver tudo

Dica C#: Default Interface Methods

Vamos falar sobre uma novidade do C# 12: Default Interface Methods. Esse recurso permite que interfaces contenham implementações de...

Dica C#: Global Using Directives

Vamos para uma dica do C# 10: Global Using Directives. Com essa funcionalidade, você pode definir diretivas using globais que se aplicam...

bottom of page