首页 / C# / c# – Polly政策应该是单身吗?
c# – Polly政策应该是单身吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Polly政策应该是单身吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1662字,纯文字阅读大概需要3分钟。
内容图文
![c# – Polly政策应该是单身吗?](/upload/InfoBanner/zyjiaocheng/820/64b53dece2ff45acb461df601bff8258.jpg)
我有一个查询,IGetHamburgers,它调用外部API.
我在我的DI容器中注册了IGetHamburgers的实现,作为Singleton.我使用Polly作为断路器,如果两个请求失败,电路将打开.
我的目标是所有对Hamburger api的调用应该通过相同的断路器,如果GetHamburgers失败,那么所有其他调用也应该失败.
我该如何使用我的保单?我应该将我的政策注册为如下字段:
private Policy _policy;
private Policy Policy
{
get
{
if(this_policy != null)
{
return this_policy;
}
this._policy = Policy
.Handle<Exception>()
.CircuitBreaker(2, TimeSpan.FromMinutes(1));
return this._policy;
}
}
public object Execute(.......)
{
return Policy.Execute(() => this.hamburgerQuery.GetHamburgers());
}
要么
public object Execute(.......)
{
var breaker = Policy
.Handle<Exception>()
.CircuitBreaker(2, TimeSpan.FromMinutes(1));
return breaker.Execute(() => this.hamburgerQuery.GetHamburgers());
}
我想第一个选项是正确的方法,因为那时Policy对象将始终是相同的,并可以跟踪异常计数和类似的东西.
我的问题是,第二种选择也会起作用吗?我在Pollys Github上发现了很多样本??/例子,但是我找不到任何“现实世界”的例子,其中Polly与DI一起使用以及类似的东西?
解决方法:
I guess that the first option is the correct way since then the Policy object will always be the same and can keep track of the exception count and stuff like that.
正确.这在Polly wiki here中有所描述.简而言之:
>当您希望这些呼叫站点共同中断时,在呼叫站点之间共享相同的断路器策略实例 – 例如,它们具有共同的下游依赖关系.
>当您希望这些呼叫站点具有独立的电路状态并独立中断时,不要在呼叫站点之间共享断路器实例.
有关将策略与其使用分开配置,通过DI将它们注入使用站点,以及在整个范围内(在2017年6月)Polly政策.
will option number two work as well?
否(因为相反的原因:每个调用创建一个单独的实例,因此不会与其他调用共享电路统计/状态).
内容总结
以上是互联网集市为您收集整理的c# – Polly政策应该是单身吗?全部内容,希望文章能够帮你解决c# – Polly政策应该是单身吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。