如何使用 Polly 在 .NET 中实现弹性策略?

幻夢星雲
发布: 2025-10-08 15:47:01
原创
953人浏览过
Polly提升.NET应用容错能力,支持重试、熔断、超时等策略。1. 安装Polly及Polly.Extensions.Http包;2. 定义重试、断路器、超时策略;3. 使用PolicyWrap组合策略;4. 推荐与IHttpClientFactory集成实现自动策略注入,增强HTTP客户端弹性。

如何使用 polly 在 .net 中实现弹性策略?

在 .NET 中使用 Polly 可以有效提升应用程序的容错能力,特别是在处理网络请求、数据库调用或第三方服务交互时。Polly 是一个强大的弹性与瞬态故障处理库,支持重试、熔断、超时、降级等多种策略。

安装 Polly 包

要在项目中使用 Polly,先通过 NuGet 安装相关包:

  • Polly:核心库
  • Polly.Extensions.Http:结合 HttpClient 使用更方便(推荐)

在项目目录下运行以下命令:

Install-Package Polly Install-Package Polly.Extensions.Http

定义常见的弹性策略

Polly 允许你组合多种策略来应对不同的异常场景。以下是几种常用策略的实现方式。

1. 重试策略(Retry)
当请求因临时故障失败时,自动重试。

var retryPolicy = Policy .Handle() .OrResult(r => !r.IsSuccessStatusCode) .WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(i * 2));

2. 断路器策略(Circuit Breaker)
防止系统在持续失败时继续发送请求,给服务恢复时间。

var circuitBreakerPolicy = Policy .Handle() .CircuitBreakerAsync( handledEventsAllowedBeforeBreaking: 3, durationOfBreak: TimeSpan.FromSeconds(30) );

3. 超时策略(Timeout)
限制操作执行时间,避免长时间挂起。

var timeoutPolicy = Policy.TimeoutAsync(TimeSpan.FromSeconds(10));

组合多个策略(PolicyWrap)

实际应用中通常需要将多个策略组合使用。Polly 提供了 PolicyWrap 来实现策略叠加。

var policyWrap = Policy.WrapAsync(retryPolicy, circuitBreakerPolicy, timeoutPolicy);

执行 HTTP 请求时应用组合策略:

如知AI笔记
如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27
查看详情 如知AI笔记
await policyWrap.ExecuteAsync(async () => { var response = await httpClient.GetAsync("https://api.example.com/data"); response.EnsureSuccessStatusCode(); });

与 IHttpClientFactory 集成(推荐方式)

在 ASP.NET Core 项目中,建议将 Polly 与 IHttpClientFactory 结合使用,实现更简洁的配置。

Program.csStartup.cs 中配置:

services.AddHttpClient("resilient-client") .AddPolicyHandler(retryPolicy) .AddPolicyHandler(timeoutPolicy) .AddPolicyHandler(circuitBreakerPolicy);

之后通过依赖注入使用 HttpClient,所有策略会自动生效。

基本上就这些。合理使用 Polly 能显著提升系统的稳定性,尤其是在不稳定的网络环境中。关键是根据业务需求选择合适的策略组合,并做好监控和日志记录。

以上就是如何使用 Polly 在 .NET 中实现弹性策略?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号