首页 > 解决方案 > 替代旧 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

解决方案


在 Polly v2.2.7 中,由 . WaitAndRetryAsync(...)大概 RetryPolicy<Response>

在许多开发环境中,如果您将鼠标悬停在var关键字或WaitAndRetryAsync(...)- 或者如果您检查返回类型的智能感知WaitAndRetryAsync(...)- 它会告诉您类型是什么。

但是,直到v4.3.0.OrResult<TResult>(...)才添加策略处理结果(子句) ,因此您将无法在 v2.2.7 中按原样使用问题中的策略。如果可以的话,建议将使用 v2.2.7 的项目升级到更高(/最新)版本的 Polly。


推荐阅读