我正在用 Polly 框架替换我当前的重试策略。我曾经这样定义我的重试策略:
var strategy = new ExponentialBackoff(RetryStrategy.DefaultClientRetryCount, RetryStrategy.DefaultMinBackoff, RetryStrategy.DefaultMaxBackoff, RetryStrategy.DefaultClientBackoff);
其中DefaultClientRetryCount
是重试次数,然后指数退避根据变量计算重试之间的睡眠时间:DefaultMinBackoff
是重试之间的最小时间跨度;DefaultMaxBackoff
是最大时间跨度;并且DefaultClientBackoff
是用于计算重试之间的随机增量的默认值。
在 Polly 上,我这样定义我的 retryPolicy:
var retryPolicy = Policy.Handle<Exception>(ex => _transientErrorDetectionStrategy.IsTransient(ex)).WaitAndRetryAsync(int retryCount, Func<int,timespan> sleepDuration);
其中retryCount
是重试次数,sleepDuration
是重试之间的时间。
如何复制上一个策略生成的重试之间的时间跨度以作为参数发送到WaitAndRetryAsync
Polly 上的方法?