Контекст поставщика услуг доступа в RunFallbackAsync HystrixCommand - PullRequest
0 голосов
/ 04 июня 2019

Я работаю над добавлением шаблона Hystrix CircuitBreaker в существующий микросервис ASP.NET Core, используя Steeltoe CircuitBreaker , сохраняя при этом существующую функциональность ведения журналов с минимальным рефакторингом (или так мало, как я могу надеяться) ,

В настоящее время входящий HTTP-запрос проходит через следующие слои:

Controller -> Service -> DerivedProvider -> AbstractProvider (and out to downstream service)

с Hystrix, я бы хотел, чтобы это было:

Controller -> Service -> HystrixCommand<> -> DerviedProvider (via HystrixCommand's ExecuteAsync) -> AbstractProvider

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

После просмотра документации Hystrix и Steeltoe CircuitBreaker Мне неясно, могу ли я поддерживать и получать доступ к провайдеру и его контексту в HystrixCommand<>.RunFallbackAsync().

Возможно, ответ может касаться хуков жизненного цикла, которые вы можете переопределить? Как <a href="https://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook.html#onFallbackStart-com.netflix.hystrix.HystrixInvokable-" rel="nofollow noreferrer">onFallbackStart(HystrixInvokable commandInstance</a>?

В конечном счете, цель состоит в том, чтобы просто убедиться, что любая существующая функция обратного вызова / регистрации не потеряна, обернув эти существующие providers в HystrixCommand. Я не понимаю, как HystrixCommand управляет поставщиками и их контекстом, и когда / где у вас есть или нет доступа к ним. Любые предложения или направления, которые вы можете предложить, будут очень благодарны! Ура!

...