2016-03-18 2 views
4

Я интегрирую Hystrix в приложение. Это приложение уже готово, и мы будем тестировать интеграцию с использованием hystrix в песочнице, прежде чем мы подталкиваем его к производству. Вопрос в том, есть ли способ включить/отключить функцию hystrix, используя некоторые настройки конфигурации?Отключить функциональность Hystrix

+0

Может быть, настройка circuitBreaker.forceClosed на true или circuitBreaker.enabled на false будет делать. – yousafsajjad

ответ

5

Для этого не существует единой настройки. Вам нужно будет установить несколько параметров для отключения Hystrix.

См https://github.com/Netflix/Hystrix/wiki/Configuration для опций конфигурации:

hystrix.command.default.execution.isolation.strategy=SEMAPHORE 
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests=100000 # basically 'unlimited' 
hystrix.command.default.execution.timeout.enabled=false 
hystrix.command.default.circuitBreaker.enabled=false 
hystrix.command.default.fallback.enabled=false 

Пожалуйста, проверьте вашу версию Hystrix для доступных параметров.

+0

Я постараюсь проверить это очень скоро. – yousafsajjad

+0

Btw, почему это имеет значение для изменения стратегии набора SEMAPHORE? – yousafsajjad

+1

Использование семафоров позволяет создавать новые потоки для ваших обернутых команд Hystrix. Поскольку вы не ограничиваете свои параллельные запросы в этой отключенной настройке, в противном случае вы в конечном итоге получите много потоков. – ahus1

2

Как сказал ahus1, нет единого способа полностью отключить Hystrix. Чтобы отключить его в нашем приложении, мы решили, что было бы самым чистым и безопасным поместить HystrixCommand в класс-оболочку, и этот класс-оболочка обнаружил только те части используемого нами HystrixCommand (в нашем случае метод execute()). При построении класса-оболочки мы передаем ему Callable, который содержит код, который мы хотим выполнить, и если Hystrix отключен (согласно нашему собственному значению конфигурации), мы просто вызываем это Callable без создания HystrixCommand. Это позволяет избежать выполнения любого кода Hystrix и упрощает утверждение о том, что Hystrix не влияет на наше приложение вообще, когда оно отключено.

+0

Это довольно аккуратное решение. Я искал идею по той же проблеме и буду использовать ее. Это первый раз, когда мы вводим Hystrix, и было бы полезно иметь возможность легко отключать его. –

0

Если ваш проект весной Managed вы можете прокомментировать определение боб hystrixAspect в applicationContext.xml Комментарий следующую строку

боб ID = "hystrixAspect" класс = "com.netflix.hystrix.contrib. javanica.aop.aspectj.HystrixCommandAspect "/>

Это удалит Hystrix из вашего проекта.

Смежные вопросы