Определение того, какой автоматический выключатель Polly сработал в обратном вызове OnOpenedC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Определение того, какой автоматический выключатель Polly сработал в обратном вызове OnOpened

Сообщение Anonymous »

В моем приложении C# есть несколько именованных HttpClients. Я привязываю политики Polly (а именно, автоматический выключатель) к каждому из них.
Мне нужно зафиксировать, какой HttpClient отключил цепь в обратном вызове OnOpened, чтобы я мог сообщить об этом вызывающий абонент сообщает, что ClientX не работает.
Я вижу, что в OnCircuitOpenedArguments есть свойство OperationKey, и я думаю, что это то, что мне нужно, но я не могу понять, как его заполнить.
Примечание: я использую Polly v8 и Microsoft.Extensions.Http.Resilience.
Вот код, который у меня есть на данный момент:
В моей настройке DI
{
services
.AddHttpClient("ClientA")
.AddResilienceHandler("ClientA", (builder, context) =>
{
var strategyFactory = context.ServiceProvider.GetRequiredService();
builder.AddPipeline(strategyFactory.Create());
});

services
.AddHttpClient("ClientB")
.AddResilienceHandler("ClientB", (builder, context) =>
{
var strategyFactory = context.ServiceProvider.GetRequiredService();
builder.AddPipeline(strategyFactory.Create());
});
}

Вызванный выше фабричный метод
public ResiliencePipeline Create()
{
var builder = new ResiliencePipelineBuilder()
.AddTimeout(MapToTimeoutStrategyOptions())
.AddCircuitBreaker(MapToHttpCircuitBreakerStrategyOptions())
.AddRetry(MapToServiceNowHttpRetryStrategyOptions());
}

Определение автоматического выключателя
private HttpCircuitBreakerStrategyOptions MapToHttpCircuitBreakerStrategyOptions() =>
new()
{
MinimumThroughput = resiliencyConfig.CircuitBreakerConfig.Throughput,
FailureRatio = resiliencyConfig.CircuitBreakerConfig.FailureRatio,
SamplingDuration = TimeSpan.FromSeconds(resiliencyConfig.CircuitBreakerConfig.SamplingDuration),
BreakDuration = TimeSpan.FromSeconds(resiliencyConfig.CircuitBreakerConfig.DurationOfBreakSeconds),
OnClosed = args =>
{
//Signal that ClientX is back up
},
OnOpened = args =>
{
//Signal that ClientX is down
}
};


Подробнее здесь: https://stackoverflow.com/questions/792 ... d-callback
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»