C# 使用Polly的断路器模式中的超时和重试逻辑

C# 使用Polly的断路器模式中的超时和重试逻辑,c#,timeout,httpclient,circuit-breaker,polly,C#,Timeout,Httpclient,Circuit Breaker,Polly,我正在使用教程与HttpClientFactory和Polly一起实现断路器模式,下面是我根据对教程的理解编写的代码RetryHttpRequestclass是使用HttpClient的类 services.AddHttpClient<IRetryHttpRequest, RetryHttpRequest>() .SetHandlerLifetime(TimeSpan.FromSeconds(3))

我正在使用教程与HttpClientFactory和Polly一起实现断路器模式,下面是我根据对教程的理解编写的代码
RetryHttpRequest
class是使用HttpClient的类

  services.AddHttpClient<IRetryHttpRequest, RetryHttpRequest>()
                    .SetHandlerLifetime(TimeSpan.FromSeconds(3))
                    .AddPolicyHandler(GetCircuitBreakerPolicy());

  static IAsyncPolicy<HttpResponseMessage> GetCircuitBreakerPolicy()
        {
            return HttpPolicyExtensions
                .HandleTransientHttpError()
                .CircuitBreakerAsync(5, TimeSpan.FromSeconds(30));
        }
services.AddHttpClient()
.SetHandlerLifetime(时间跨度从秒开始(3))
.AddPolicyHandler(GetCircuitBreakerPolicy());
静态IAsyncPolicy GetCircuitBreakerPolicy()
{
返回HttpPolicyExtensions
.HandleTransientHttpError()
.CircuitBreakerAsync(5,从秒开始的时间跨度(30));
}
  • 对于
    SetHandlerLifetime
    ,此处的生存期是否表示每个API请求的生存期?因此,如果我重试3次,每次重试的时间应该不会超过3秒。有趣的是,默认的生存时间是2分钟,我认为这太长了

  • SetHandlerLifetime(TimeSpan.FromSeconds(3))
    CircuitBreakerAsync(5,TimeSpan.FromSeconds(30))
    如何相互关联和协同工作

  • SetHandlerLifetime(…)
    与单个调用的超时无关。它是关于,它提供了一个

    有关通过HttpClientFactory应用超时并将其与重试策略相结合的信息,请参阅

    SetHandlerLifetime(…)
    与单个调用的超时无关。它是关于,它提供了一个

    有关通过HttpClientFactory应用超时并将其与重试策略相结合的信息,请参阅