Использует ли подход автоматического выключателя для обработки ответов http 429 слишком много излишнего - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть служба, которую я звоню.Давайте назовем это 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 и отменяет регистрацию вызова, когда служба возвращается.Но позже я захочу реализовать другой класс, который предоставляет альтернативный путь действия или использует резервный сервис.Я знаю, что существует шаблон повторов, но я чувствую, что регистрирую каждый вызов и отслеживаю количество выполненных вызовов для сравнения с общим количеством разрешенных вызовов, которые разрешит служба, так как я уже знаю, что заранее поможет мне превентивно разорвать цепь, когда язнаю, что это потерпит неудачу.

Мысли об этом шаблоне.Работоспособный, идеальный, излишний?

...