#java #hystrix
#java #hystrix
Вопрос:
Для модульного тестирования я хотел бы иметь возможность подписываться на события Hystrix, особенно если произойдет событие, когда автоматический выключатель открывается или закрывается. Я поискал примеры, и оказалось, что обходной путь заключается в том, чтобы подключиться к потоку показателей и отслеживать флаги автоматического отключения.
Поскольку Hystrix построен на RxJava, я подумал, что где-то должен быть интерфейс подписки на события. Есть ли простой способ подписаться на события такого типа в Hystrix?
Спасибо!
Комментарии:
1. Похоже, есть события, которые вы можете использовать: github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring
2. @Jocke Спасибо, я тоже это видел, но я искал что-то более подробное, чтобы я мог подписаться на конкретное действие по сравнению с общей категорией событий… по крайней мере, так я понял эти события.
Ответ №1:
Вам нужно написать пользовательский уведомитель о событиях и зарегистрировать его в HystrixPlugins. посмотрите на приведенный ниже код.
public class CircuitBreakerHystrixEventNotifier extends HystrixEventNotifier{
public CircuitBreakerHystrixEventNotifier(){
}
public void markEvent(HystrixEventType eventType, HystrixCommandKey key) {
//here write code based on eventTypes.
}
}
Вам необходимо зарегистрировать этот CircuitBreakerHystrixEventNotifier в hystrix, см. Ниже
HystrixPlugins.getInstance().registerEventNotifier(getCircuitBreakerHystrixEventNotifier());
Комментарии:
1. Я нашел уведомители о событиях, но было неясно, какой тип события отслеживать. Вы бы знали?
2. Для открытой схемы вы можете использовать SHORT_CIRCUITED (полный список находится в enum Hystrix EventType ), но не уверен в событии closed . На самом деле, я тоже ищу то же самое, опубликую здесь, если что-то получу.
3. Интересно, похоже, что SHORT_CIRCUITED — это логический флаг, а также тип события. Это решает проблему или я что-то пропустил?
4. Да, вы можете отслеживать событие открытия цепи для этого типа события.