我想执行某个操作,如果失败三次,则返回null。在Polly中类似这样的东西将是完美的:
var results = await Policy<IList<Value>>
.Handle<TaskCanceledException>()
.RetryAsync<IList<Value>>(3)
.FallbackAsync(null as IList<Value>)
.ExecuteAsync(() => myRestfulCall());这是不可能的,因为RetryAsync返回一个AsyncRetryPolicy,并且在此类型上没有定义回退扩展方法。有没有Polly语法可以做到这一点,而不需要try/catch块?
发布于 2019-03-23 03:15:17
Polly允许您通过PolicyWrap:extensive documentation here灵活地组合任何策略。
你引用的例子可以实现如下所示:
var fallback = Policy<IList<Value>>
.Handle<TaskCanceledException>()
.FallbackAsync(null as IList<Value>);
var retry = Policy<IList<Value>>
.Handle<TaskCanceledException>()
.RetryAsync<IList<Value>>(3);
var results = await fallback.WrapAsync(retry)
.ExecuteAsync(() => myRestfulCall());https://stackoverflow.com/questions/55299641
复制相似问题