#java #spring #spring-boot #hystrix #circuit-breaker
#java #весна #весенняя загрузка #hystrix #автоматический выключатель
Вопрос:
Рассмотрим приведенный ниже код,
Основной класс
@SpringBootApplication
@EnableCircuitBreaker
public class Main {
}
RestController
@PostMapping("/...")
@HystricCommand(commandProperties = { @HystrixProperty(name=”execution.isolation.thread.timeoutInMilliSeconds”, value=”${request.timeout.interval}”)})
public Object getData(){
}
Когда я вызываю эту конечную точку, я получаю:
Исключение HystrixProperty — не удалось установить свойства commandproperty. GroupKey: MyController, commandKey: getData, ThreadPool: ‘null’.
Когда я удаляю -> value=”${request.timeout.interval}”
и жестко кодирую его как -> value=”1000”
, исключение больше не отображается, и выполнение выполняется успешно.
Разве мы не можем выполнить сопоставление значений здесь? Если нет, возможно ли переместить это свойство в application.properties или глобально обработать свойство с помощью любого файла конфигурации?
Я не хочу, чтобы поле значения было жестко запрограммировано вместе с моими конечными точками, поскольку в моем приложении более 10 конечных точек.
Ответ №1:
Из команды @HystrixCommand в вашем контроллере удалите свойство HystrixProperty, настроенное для тайм-аута, и укажите командный ключ =. Теперь в вашем приложении.properties добавьте,
hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds=2000
Для получения более подробной информации оформите заказ,
https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation .поток.Время ожидания в миллисекундах