使用IServiceProvider的Polly断路器策略

问题描述

我需要为HttpClient中的几个添加断路器策略。因此,我必须与所有客户共享我的断路器策略。

public static AsyncCircuitBreakerPolicy circuitBreaker = Policy
    .Handle<Exception>()
    .CircuitBreakerAsync(1,TimeSpan.FromSeconds(30),(exception,timespan,context) => { },context => { }
    );

但是我需要访问IServiceProvider才能获得另一项服务,以对断路进行一些操作。例如

Action<Exception,TimeSpan,Context> onBreak = (exception,context) =>
{
    var service = serviceProvider.GetService<IService>();
    service.CircuitBroken();
};

我该如何实现?

我打算在客户上致电AddPolicyHandler。但这将是CircuitBreaker策略的新实例。

serviceCollection
    .AddHttpClient<IClient1,Client1>()
    .AddPolicyHandler((serviceProvider,request) =>
        GetCircuitBreakerPolicy(serviceProvider));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...