我如何确定Polly中最后一次重试的完成(不是onRetry事件,而是实际的执行和完成)?
我可以在onRetry事件中将重试次数与最大重试次数进行比较,但是该事件只是重试的启动,尚未在等待时间内发生。我想做的是确定最终重试的成功与否。
答案 0 :(得分:2)
我想做的是确定最终重试的成功与否。
您可以使用Polly的ExecuteAndCaptureAsync()
代替.ExecuteAsync()
。
ExecuteAndCaptureAsync()
返回带有PolicyResult
或PolicyResult.Outcome == OutcomeType.Successful
的{{1}}对象(在文档中介绍的其他属性中)。
如果坚持使用OutcomeType.Failure
而不是.ExecuteAsync()
,则通过继续执行下一条语句来确定最终尝试的结束(成功)。或(失败时)根据策略rethrowing the final exception。 ExecuteAndCaptureAsync()
只是这些行为的包装。