我正在使用这个使用 polly 进行重试的小巧扩展。
我们可以看到它定义了一个静态重试策略:
private static readonly AsyncRetryPolicy RetryPolicy =
Policy
.Handle<SqlException>(SqlServerTransientExceptionDetector.ShouldRetryOn)
.Or<TimeoutException>()
.OrInner<Win32Exception>(SqlServerTransientExceptionDetector.ShouldRetryOn)
.WaitAndRetryAsync(RetryTimes,
(exception, timeSpan, retryCount, context) =>
{
LogTo.Warning(
exception,
"WARNING: Error talking to ReportingDb, will retry after {RetryTimeSpan}. Retry attempt {RetryCount}",
timeSpan,
retryCount
);
});
理想情况下,我想进行RetryTimes
设置。但是,我不确定如何传递IConfiguration
给RetryTimes
静态属性?
我能想到的工作是将 polly 策略定义为单例(这样我就可以读取设置)。然后在这个扩展方法中,我实际上传递了策略。这是在 .NET Core 中处理它的正确方法吗?