public static IHttpClientBuilder AddPolicyHandlers(this IHttpClientBuilder httpClientBuilder, string policySectionName, ILoggerFactory loggerFactory, IConfiguration configuration) { var retryLogger = loggerFactory.CreateLogger("PollyHttpRetryPoliciesLogger"); var circuitBreakerLogger = loggerFactory.CreateLogger("PollyHttpCircuitBreakerPoliciesLogger"); var policyConfig = new PolicyConfig(); configuration.Bind(policySectionName, policyConfig); var circuitBreakerPolicyConfig = (ICircuitBreakerPolicyConfig)policyConfig; var retryPolicyConfig = (IRetryPolicyConfig)policyConfig; return(httpClientBuilder.AddRetryPolicyHandler(retryLogger, retryPolicyConfig) .AddCircuitBreakerHandler(circuitBreakerLogger, circuitBreakerPolicyConfig)); }
public static IHttpClientBuilder AddPolicyHandlers(this IHttpClientBuilder httpClientBuilder, string policySectionName, IConfiguration configuration) { var serviceProvider = httpClientBuilder.Services.BuildServiceProvider(); var retryLogger = serviceProvider.GetService <ILogger <HttpRetryPolicies> >(); var circuitBreakerLogger = serviceProvider.GetService <ILogger <HttpCircuitBreakerPolicies> >(); var policyConfig = new PolicyConfig(); configuration.Bind(policySectionName, policyConfig); var circuitBreakerPolicyConfig = (ICircuitBreakerPolicyConfig)policyConfig; var retryPolicyConfig = (IRetryPolicyConfig)policyConfig; return(httpClientBuilder.AddRetryPolicyHandler(retryLogger, retryPolicyConfig) .AddCircuitBreakerHandler(circuitBreakerLogger, circuitBreakerPolicyConfig)); }