Как я могу сохранить состояние выключателя в базе данных? - PullRequest
0 голосов
/ 03 марта 2020

Я должен внедрить автоматический выключатель в свое приложение. Все идет хорошо, автоматический выключатель работает, но мне нужно сохранить его состояние в базе данных. Как я могу это сделать? Я не могу найти ничего надежного в Интернете.

Вот код, который работает для прерывания цепи:

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;
        }

Спасибо!

1 Ответ

0 голосов
/ 07 марта 2020

Полли не предлагает механизма для хранения состояния автоматических выключателей в базе данных.


Команда Полли создала надежный (ie постоянный) распределенный автоматический выключатель, который можно найти здесь: https://github.com/Polly-Contrib/Polly.Contrib.AzureFunctions.CircuitBreaker

Этот надежный распределенный автоматический выключатель находится в Azure Функции в качестве функции долговременного объекта. (Вы берете код и размещаете его самостоятельно в своем собственном Azure экземпляре функций.)

Прочный распределенный автоматический выключатель можно использовать:

  • в пределах Azure приложение функций - обычными Azure функциями или надежными функциями оркестровки;
  • из любого места, через https API.
...