.Net Core Polly重试、超时、缓存策略如何精编成?

摘要:Polly这个东西比较早的时候有去了解,没有实际应用也快忘得差不多了。 近期有个任务是把项目中的Hangfire依赖移除。项目中使用Hangfire执行一个定期任务,周期是一秒。 原本项目已经用到了Hangfire,选用它做定期Job是“顺
Polly这个东西比较早的时候有去了解,没有实际应用也快忘得差不多了。 近期有个任务是把项目中的Hangfire依赖移除。项目中使用Hangfire执行一个定期任务,周期是一秒。 原本项目已经用到了Hangfire,选用它做定期Job是“顺其自然+想当然”的,但它因为在仪表盘产生大量的log,影响其他项目的Debug,所以领导决定弃用它。 替代方案考虑了Thread、Thread.Timer、Polly、BackgroundService、IHostService。 个人选择创建一个派生自BackgroundService的Monitor类,后由于领导对性能高要求,最后又改为了Timer实现。 在最终实现方案确定前,又想到了Polly,所以就再次温习了一下。 看网上的讲解零零散散的,Demo也多比较潦草(且多是复制转载),于是决定自己整理一套更容易让大家看懂的Demo。 温馨提示: 在深究某个Demo的具体代码前,建议先理解一下这个Demo模拟的具体场景。 之所以整理这些Demo是因为看了很多文章,都是单纯的在贴代码,有些人代码都看懂了,但是根本不知道怎么用。 所以我尽可能地用有限的代码和注释模拟一个较为接近真实的应用场景。这有助于更好地立即Polly的使用场景和功能细节。 DemoBase 因为创建了一个独立的完整项目,所以所有Demo均继承自DemoBase类,提供公用的一些方法。 如果希望运行这些Demo,注意添加此类并使用下面的Program类。
阅读全文