微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据异常制作有条件的 WaitAndRetry 或 WaitAndRetryForever?

如何解决如何根据异常制作有条件的 WaitAndRetry 或 WaitAndRetryForever?

这是我的尝试:

private Policy retryPolicy { get; } = Policy
    .Handle<IOException>()
    .WaitAndRetryAsync(3,retryAttempt => TimeSpan.FromSeconds(Math.Pow(2,retryAttempt)));
private Policy bigFilePolicy { get; } = Policy
    .Handle<UnauthorizedAccessException>()
    .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(Math.Pow(2,retryAttempt)));

retryPolicy.ExecuteAsync(() => bigFilePolicy.ExecuteAsync(command));  

我正在尝试为自动文件上传系统制定重试策略。当文件太大时,需要一些时间才能放入文件夹中,并且在加载时,我的程序给出了未经授权的访问异常,在这种情况下,我考虑允许 WaitAndRetryForever 用于大文件。否则,如果它遇到其他异常,则不应永远重试。

解决方法

要将策略混合在一起,您需要调用 Policy.Wrap/Policy.WrapAsync。例如,您可以这样做:

var exponentialBackoffPolicy = Policy.WrapAsync(retryPolicy,bigFilePolicy);

甚至:

var exponentialBackoffPolicy = retryPolicy.WrapAsync(bigFilePolicy);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。