如何为AspNetCore.HealthChecks.Uris健康检查添加Polly重试策略?
解决AspNetCore.Diagnostics.HealthChecks中AddUrlGroup集成Polly的问题
你可以通过两种方式在使用AddUrlGroup时集成Polly策略,无需纠结如何直接获取IHttpClientBuilder:
方式一:利用返回IHttpClientBuilder的AddUrlGroup重载
部分AddUrlGroup重载会直接返回对应的IHttpClientBuilder实例,你可以链式调用AddPolicyHandler添加Polly策略:// 注册健康检查并获取HttpClientBuilder var httpClientBuilder = healthCheckBuilder.AddUrlGroup(new Uri("https://example.com/health"), name: "example-service"); // 添加Polly重试策略示例 httpClientBuilder.AddPolicyHandler(Policy .Handle<HttpRequestException>() .WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));方式二:先注册带Polly策略的命名客户端
先通过AddHttpClient注册命名客户端并配置Polly策略,再在AddUrlGroup中指定该客户端名称:// 注册带熔断策略的命名客户端 services.AddHttpClient("example-service") .AddPolicyHandler(Policy .Handle<HttpRequestException>() .CircuitBreakerAsync(5, TimeSpan.FromSeconds(30))); // 健康检查中使用该命名客户端 healthCheckBuilder.AddUrlGroup(new Uri("https://example.com/health"), name: "example-service");
这两种方式都能轻松实现健康检查请求的Polly策略集成,适配不同的代码编写习惯。
内容的提问来源于stack exchange,提问作者handles
相关产品推荐
相关产品推荐

