通过 Polly 重试策略确定最终重试的完成

Posted

技术标签:

【中文标题】通过 Polly 重试策略确定最终重试的完成【英文标题】:Identify completion of final retry by Polly retry policy 【发布时间】:2018-12-27 19:31:04 【问题描述】:

如何识别Polly中最终重试的完成(不是onRetry事件,而是实际执行完成)?

我可以将重试次数与 onRetry 事件中的最大重试次数进行比较,但该事件只是开始重试,在等待期间尚未发生。我想要做的是确定最终重试的结束,无论是成功还是失败。

【问题讨论】:

【参考方案1】:

我想要做的是确定最终重试的结束,无论是成功还是失败。

您可以使用 Polly 的 ExecuteAndCaptureAsync() 代替 .ExecuteAsync()

ExecuteAndCaptureAsync() 返回一个带有PolicyResult.Outcome == OutcomeType.SuccessfulOutcomeType.FailurePolicyResult 对象(以及文档中介绍的其他属性)。


如果坚持使用.ExecuteAsync() 而不是ExecuteAndCaptureAsync(),则通过继续执行下一条语句来确定最后一次尝试的结束(成功时);或(失败时)通过策略rethrowing the final exception。 ExecuteAndCaptureAsync() 只是这些行为的包装。

【讨论】:

以上是关于通过 Polly 重试策略确定最终重试的完成的主要内容,如果未能解决你的问题,请参考以下文章

Polly 重试策略

使用最小起订量测试 Polly 重试策略

Polly的多种弹性策略介绍和简单使用

你真的会重试吗?——重试机制之二进制指数退避机制

Polly 同步重试

从gRPC的重试策略说起