用途:为 .NET 应用添加容错能力,使用 Polly v8 与 Microsoft.Extensions.Http.Resilience 构建弹性管道,覆盖 HTTP 与非 HTTP 场景。
主要能力:标准弹性管道按推荐顺序分层——限流、总超时、重试、熔断、单次尝试超时;支持自定义管道、组合多种策略、类型化管道 ResiliencePipeline<T>、对冲(hedging)策略,以及通过 System.Diagnostics 自动输出指标与追踪。
使用方式:安装 Microsoft.Extensions.Http.Resilience(会传递引入 Polly v8 与 Microsoft.Extensions.Resilience),非 HTTP 场景可只装 Microsoft.Extensions.Resilience。HTTP 客户端调用 .AddStandardResilienceHandler() 应用默认管道,或传入 options 自定义重试次数、退避类型、熔断阈值与超时;也可用 builder.Services.AddResiliencePipeline 注册自定义管道并通过 [FromKeyedServices] 注入使用。配置可绑定 appsettings.json 的 Resilience 节。
适用场景:调用外部 HTTP API、数据库、消息队列、文件 I/O 等需要重试、熔断、超时控制的场景;对冲适用于幂等的 GET 或只读查询。
限制与注意:Microsoft.Extensions.Http.Polly 已被取代,新项目不应使用;不要混用 Polly v7 与 v8 API;不要重复添加 AddStandardResilienceHandler;单次尝试超时须短于总超时;不要重试非幂等操作;生产环境应启用 jitter 并通过配置管理延迟。DI 机制、异步取消传播、HTTP 客户端工厂与策略测试不在本技能范围内,分别参见相关技能。具体版本与完整迁移步骤以官方文档为准。