当前位置: 首页 > 编程语言 > C#

Polly策略应该是单一的吗?分享

时间:2023-04-10 18:16:53 C#

Pollypolicy应该是单身吧?我有一个查询IGetHamburgers,它调用外部API。我在我的DI容器中将IGetHamburgers的实现注册为Singleton。我正在使用Polly作为断路器,如果两个请求失败,电路将打开。我的目标是所有对Hamburgerapi的调用都应该通过同一个断路器,如果GetHamburgers失败,那么所有其他调用也应该失败。我如何使用我的保单?我应该将我的政策注册为这样的字段:privatePolicy_policy;私人政策政策{get{if(this_policy!=null){returnthis_policy;}this._policy=Policy.Handle().CircuitBreaker(2,TimeSpan.FromMinutes(1));返回这个._policy;}}publicobjectExecute(.......){returnPolicy.Execute(()=>this.hamburgerQuery.GetHamburgers());}或publicobjectExecute(.......){varbreaker=Policy.Handle().CircuitBreaker(2,TimeSpan.FromMinutes(1));返回breaker.Execute(()=>this.hamburgerQuery.GetHamburgers());我认为第一个选项是正确的方法,因为这样Policy对象将始终相同并且可以跟踪异常计数和类似的东西。我的问题是,第二种选择是否也有效?我在PollysGithub上找到了很多样本??/示例,但是我找不到任何将Polly与DI和类似的东西一起使用的“真实世界”示例?我想第一个选项是正确的方法,因为那样的话Policy对象将始终相同并且可以跟踪异常计数和类似的东西。正确的。这在Pollywiki中有描述。简而言之:请参阅此stackoverflow答案,以更广泛地讨论将配置策略与其使用分离,通过DI将它们注入使用站点,以及跨范围重用相同实例(例如单例)与使用单独实例的效果(2017年6月)波利政策。第二个选项也会起作用吗?否(相反的原因:每个调用都会创建一个单独的实例,因此电路统计/状态不会与其他调用共享)。以上是C#学习教程:Pollypolicy要不要单一?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: