Всякий раз, когда наш код генерирует исключение, которое говорит com.netflix.hystrix.exception.HystrixRuntimeException: MyClass timed-out and fallback failed.
, нам всегда нужно догадаться, действительно ли проблема заключается в том, что Hystrix настроена правильно. Простым способом мы могли бы ответить на этот вопрос, если бы журнал сказал, сколько времени потребовалось для потока Hystrix для запуска до его ошибки. Таким образом, если он говорит 1000 мс, мы знаем, что Hystrix настроен неправильно (потому что это значение по умолчанию), и если он говорит 5000 мс, мы знаем, что он настроен так, как мы хотим.Когда истечет время ожидания, как вы печатаете время?
0
A
ответ
1
вы можете сделать что-то вроде этого:
command.getExecutionTimeInMilliseconds()
этот метод показывает, сколько секунд ваш метод запуска взяли, чтобы захватить в тайм-аут вы можете обернуть это в попытке поймать внутри класса команды
@Override
protected HttpResponse run() throws Exception {
try {
return executeSomeCall();
} catch (Exception e) {
System.out.println(getExecutionTimeInMilliseconds());
throw e;
}
}
или за его пределами на вызов
try {
HttpResponse response = command.execute();
return response;
}
catch (HystrixRuntimeException e) {
command.getExecutionTimeInMilliseconds() // do something with the info
}
только с одной точки, если ц se Стратегии Threads это нормально, но если вы используете Semaphor, тайм-аут произойдет только после того, как вы получите ответ. даже если ваш тайм-аут составляет 1000 мс, а запрос занял 5000 мс. hystryx будет ждать 5000 мс, чтобы дать вам ошибку таймаута, и getExecutionTimeInMilliseconds вернет вам 1000 мс.