我想用 Polly 来做以下事情: 尝试一个超时时间很短的请求。如果失败,请使用更长的超时时间重试。
我看到Retry
可以这样访问retryCount
:
Policy
.Handle<SomeExceptionType>()
.Retry(3, (exception, retryCount, context) =>
{
// do something
});
我看到Timeout
可以指定一个int
or TimeSpan
,如下所示:
Policy.Timeout(TimeSpan.FromMilliseconds(2500))
我什至看到您可以将函数传递给超时,如下所示:
Policy.Timeout(() => myTimeoutProvider)) // Func<TimeSpan> myTimeoutProvider
该Func
选项似乎最有希望,但它可以在哪里访问重试计数?将状态保留在策略之外是很诱人的,但是如果我想以线程安全的方式共享策略,那是很危险的。
有什么建议吗?