【发布时间】:2017-09-11 00:41:26
【问题描述】:
我正在尝试让超时策略正常工作。 我在集成 api 时有以下要求。
- 创建一个 http 请求以调用端点 1 并传递 transactionID 并捕获结果
- 如果 http 请求在 20 秒内没有响应,则发送具有相同事务 ID 的取消请求并捕获结果
对于这个任务,我想使用 Polly,在我看来,它是一个很棒的组件,可以帮助处理瞬态故障。但是,由于我对这项技术非常陌生,我只想确定我是否正确实施。
首先,我已经像这样使用 Polly 创建了超时策略
var timeoutPolicy =
Policy.TimeoutAsync(
TimeSpan.FromSeconds( 20 ),
TimeoutStrategy.Optimistic,
async ( context, timespan, task ) => {
//write here the cancel request
} );
然后我就可以执行策略了
var policyResult = await timeoutPolicy.ExecuteAndCaptureAsync( async () => {
//make here the request 1
} );
我从文档中得到的是,如果在 timeoutPolicy.ExecuteAndCaptureAsync 委托中发生超时,Polly 会自动调用 onTimeout 委托。对吧?
但是我的问题是:
- 如果在执行委托中发生异常会怎样?我应该把那个 polly 结构包装在一个 try catch 中吗?
- 当我分析策略结果时,如何了解是否发生超时?
【问题讨论】:
标签: c# polly transient-failure