polly - 替代旧 Polly 包中的“AsyncRetryPolicy”类型
问题描述
我创建了一个使用 Polly 进行电子邮件重试的新代码/项目,并且我选择了最新的 Polly Nuget 包 v7.2.1。但后来似乎我们有其他项目使用旧版本的 Polly (v2.2.7),因此我为我的项目降级了包。
但在降级后,由于不再识别这种类型而无法编译 - “AsyncRetryPolicy”。
我可以在旧版本的 Polly 中使用这种类型的替代品吗?
我的代码:
private AsyncRetryPolicy<Response> CreatePollyPolicy(SendEmailMessageRequest request)
{
var policy = Policy.Handle<Exception>()
.OrResult<SendGrid.Response>(response => 500)
.WaitAndRetryAsync(
5, retryAttempt => TimeSpan.FromSeconds(10 * retryAttempt),
async (exception, timeSpan, retryCount, context) =>
{
await LogFailMessage(request);
}
);
return policy;
}
解决方案
在 Polly v2.2.7 中,由 . WaitAndRetryAsync(...)
大概是 RetryPolicy<Response>
。
在许多开发环境中,如果您将鼠标悬停在var
关键字或WaitAndRetryAsync(...)
- 或者如果您检查返回类型的智能感知WaitAndRetryAsync(...)
- 它会告诉您类型是什么。
但是,直到v4.3.0.OrResult<TResult>(...)
才添加策略处理结果(子句) ,因此您将无法在 v2.2.7 中按原样使用问题中的策略。如果可以的话,建议将使用 v2.2.7 的项目升级到更高(/最新)版本的 Polly。
推荐阅读
- python - Scipy.sparse.csr_matrix 在具有浮点值的矩阵上运行缓慢
- php - PHP While 循环在 MySql 数据库中仅显示一种产品后停止
- javascript - 使用 Sequalize 运算符获取日期
- javascript - 空白服务工作者脚本
- javascript - 如何禁用网站模板中的滑块?
- java - 配置弹簧批处理而不持久化元数据
- halcon - c#中的gen_contour_region_xld控制参数错误
- secevents - Google-RISC API 回调的有效负载是什么?
- wpf - 以不同于其他 WPF 的方式加载页面的一部分
- android - 如何在 Android 9.0 pie 中获取 ECDH 密钥对?