发生异常时,如何处理C#应用程序中的退避或“等待和重试”逻辑?

发生异常时,如何处理C#应用程序中的退避或“等待和重试”逻辑?,第1张

概述我正在从REST服务中读取并需要为一个使用频繁的服务处理“等待并重试”,这会给我一个错误: Too many queries per second 要么 Server Busy 一般来说,由于我有许多REST服务要调用,我怎么能一般地处理发生异常时会发生的退避逻辑呢? 有没有内置的框架?我只是想编写干净的代码,不要太担心管道和基础设施. 您可以在一个处理重试逻辑的方法中将尝试包装起来.例如,如果您 我正在从REST服务中读取并需要为一个使用频繁的服务处理“等待并重试”,这会给我一个错误:

Too many querIEs per second

要么

Server Busy

一般来说,由于我有许多REST服务要调用,我怎么能一般地处理发生异常时会发生的退避逻辑呢?

有没有内置的框架?我只是想编写干净的代码,不要太担心管道和基础设施.

解决方法 您可以在一个处理重试逻辑的方法中将尝试包装起来.例如,如果您使用的是WebClIEnt的异步方法:
public async Task<T> Retryquery<T>(Func<Task<T>> operation,int numberOfAttempts,int msecsBetweenRetrIEs = 500){     while (numberOfAttempts > 0)     {          try          {               T value = await operation();               return value;          }          catch          {                // Failed case - retry                --numberOfAttempts;                             }          await Task.Delay(msecsBetweenRetrIEs);     }     throw new ApplicationException("Operation Failed repeatedly");}

然后你可以通过以下方式使用:

// Try 3 times with 500 ms wait times in betweenstring result = await Retryquery(async () => webClIEnt.DownloadStringTaskAsync(url),3);
总结

以上是内存溢出为你收集整理的发生异常时,如何处理C#应用程序中的退避或“等待和重试”逻辑?全部内容,希望文章能够帮你解决发生异常时,如何处理C#应用程序中的退避或“等待和重试”逻辑?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存