Должен ли я реализовать как политику повторных попыток, так и автоматический выключатель для вложенных методов, вызывающC#

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

Сообщение Гость »


У меня есть многоуровневое приложение, в котором Метод1 вызывает Метод2. Внутри Method2 я взаимодействую с внешними ресурсами, такими как Redis и Event Hub. Я уже реализовал политику повтора для Method1.

Теперь я рассматриваю возможность внедрения шаблона автоматического выключателя для повышения отказоустойчивости. Моя главная забота — где реализовать этот шаблон автоматического выключателя. Должно ли это быть на уровне Method2, где осуществляется доступ к внешним ресурсам?

Кроме того, следует ли мне реализовать другую политику повтора специально в Method2, или это будет излишним, поскольку в Main уже есть политика повтора, вызывающая Method1 >?

Вот упрощенная схема иерархии вызовов для контекста:

с использованием Полли; использование Polly.CircuitBreaker; использование системы; классная программа { // Определить политику автоматического выключателя как статический элемент частный статический только для чтения CircuitBreakerPolicy CircuitBreakerPolicy = Политика .Handle() .CircuitBreaker(2, TimeSpan.FromMinutes(1)); static void Main(string[] args) { // Определить политику повтора вар retryPolicy = Политика .Handle() .Повторить(3); // Обернуть политику повтора вокруг метода 1 пытаться { retryPolicy.Execute(Метод1); } поймать (Исключение e) { Console.WriteLine($"Не удалось выполнить метод 1. Причина: {e.Message}"); } } статическая пустота Метод1() { Console.WriteLine("Выполнение метода1"); //Другие обращения к внешним ресурсам Метод2(); } статическая пустота Метод2() { Console.WriteLine("Выполнение метода2"); CircuitBreakerPolicy.Execute(() => { // Имитируем вызов внешнего ресурса Console.WriteLine("Вызов внешних ресурсов, таких как Redis, Event Hub и т. д."); // Раскомментируем для имитации сбоя // выдаем новое исключение("Имитируемый сбой внешнего ресурса"); }); } } Мне хотелось бы услышать некоторые рекомендации или опыт решения этой проблемы.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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