У меня есть служба, которую я звоню.Давайте назовем это LookupService
.У меня есть следующая строка кода в моем клиентском приложении, которое вызывает эту службу
var resp= serviceClient.Lookup(payLoad);
Теперь владельцы этой службы настроили LookupService
так, чтобы не разрешать более 5 одновременных вызовов службы на одного клиента.Более того, они вернут HTTP 429.
Я думаю о введении этого одного вызова в метод проверки непосредственно перед вызовом метода Lookup
.Кое-что с эффектом:
ICircuitBreaker cb = CircuitBreakerFactory.GetInstance(); //return a retry instance
cb.Break();
var resp= serviceClient.Lookup(payLoad);
На данный момент я хочу приостановить и повторить попытку, только если было достигнуто максимальное количество одновременных вызовов или если служба возвращает код http 429. Я зарегистрируюсь на внутреннемстатическая переменная непосредственно перед каждым вызовом метода Lookup и отменяет регистрацию вызова, когда служба возвращается.Но позже я захочу реализовать другой класс, который предоставляет альтернативный путь действия или использует резервный сервис.Я знаю, что существует шаблон повторов, но я чувствую, что регистрирую каждый вызов и отслеживаю количество выполненных вызовов для сравнения с общим количеством разрешенных вызовов, которые разрешит служба, так как я уже знаю, что заранее поможет мне превентивно разорвать цепь, когда язнаю, что это потерпит неудачу.
Мысли об этом шаблоне.Работоспособный, идеальный, излишний?