Можно ли подписаться на событие открытия circuitBreaker в Hystrix?

#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. Да, вы можете отслеживать событие открытия цепи для этого типа события.