C# 如何将断路器状态存储到数据库中?

C# 如何将断路器状态存储到数据库中?,c#,api,polly,circuit-breaker,C#,Api,Polly,Circuit Breaker,我必须在我的应用程序中实现断路器。一切正常,断路器正在工作,但我需要将其状态存储到数据库中。我该怎么做?我在网上找不到任何可靠的东西 以下是适用于断路器的代码: public static IServiceCollection AddTenantService(this IServiceCollection services, IConfiguration configuration) { var tenantServiceSettings = confi

我必须在我的应用程序中实现断路器。一切正常,断路器正在工作,但我需要将其状态存储到数据库中。我该怎么做?我在网上找不到任何可靠的东西

以下是适用于断路器的代码:

public static IServiceCollection AddTenantService(this
IServiceCollection services, IConfiguration configuration)
        {
            var tenantServiceSettings = configuration?.GetSection("ApiEndpoints");
            var tenantServiceBaseUrl = tenantServiceSettings.GetValue<string>("TenantServiceApiLink");

            var advancedCircuitBreakerPolicy = Policy
                .HandleResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode)
                .AdvancedCircuitBreakerAsync(0.5, TimeSpan.FromSeconds(30), 2, 
                    TimeSpan.FromSeconds(30), onBreak: (exception, context) => Console.WriteLine($"{exception}"), onReset: null);
 
            services.AddHttpClient<ITenantService, TenantService>(client => { client.BaseAddress = new
Uri(tenantServiceBaseUrl); })
                .SetHandlerLifetime(TimeSpan.FromMinutes(5))
                .AddPolicyHandler(advancedCircuitBreakerPolicy);
            return services;
        }
公共静态IServiceCollection AddTenantService(此
IServiceCollection服务,IConfiguration配置)
{
var tenantServiceSettings=configuration?.GetSection(“ApiEndpoints”);
var tenantServiceBaseUrl=tenantServiceSettings.GetValue(“TenantServiceApiLink”);
var advancedCircuitBreakerPolicy=策略
.HandleResult(r=>!r.IsSuccessStatusCode)
.AdvancedCircuitBreakerAsync(0.5,时间跨度从秒(30),2,
TimeSpan.FromSeconds(30),onBreak:(异常,上下文)=>Console.WriteLine($“{exception}”),onReset:null;
services.AddHttpClient(客户端=>{client.BaseAddress=new
Uri(租户服务基本URL);})
.SetHandlerLifetime(时间跨度从分钟(5))
.AddPolicyHandler(advancedCircuitBreakerPolicy);
返回服务;
}

谢谢

Polly没有提供在数据库中存储断路器状态的机制


Polly团队编写了一个持久(即持久)分布式断路器,可在以下位置找到:

这个持久的分布式断路器作为持久的实体函数托管在Azure函数中。(您获取代码并将其托管在自己的Azure函数实例中。)

耐用的分布式断路器可用于:

  • 在Azure功能应用程序中-通过普通Azure功能或持久编排功能
  • 从任何地方,通过https API