C# 使用Polly的断路器模式中的超时和重试逻辑
我正在使用教程与HttpClientFactory和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))
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应用超时并将其与重试策略相结合的信息,请参阅