Как настроить аннотации Hystrix из файла свойств?

Я использую библиотеку Hystrix-Javanica, чтобы применить автоматический выключатель с помощью аннотаций. Я хотел бы настроить Hystrix со свойствами, определенными в конфигурации Spring. Поскольку мое приложение использует Spring AOP, я надеялся, что что-то вроде этого сработает:

@HystrixCommand(commandProperties = {
  @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "${cb.requestVolumeThreshold}")
})
public boolean checkWebservice(String id) { ... }

Но это не удается с bad property value. property name 'circuitBreaker.requestVolumeThreshold'. Expected int value

Есть идеи, как настроить Hystrix без жесткого кодирования значений?


person Tim Van Laer    schedule 29.01.2016    source источник
comment
вы также можете следовать этому ... stackoverflow.com/questions/31211685/   -  person akash777.sharma    schedule 20.09.2019


Ответы (1)


Использование заполнителей свойств внутри аннотаций Hystrix не сработало.

Вместо этого я решил определить полные свойства конфигурации, например:

hystrix.command.checkWebservice.circuitBreaker.requestVolumeThreshold=10

И я добавил этот класс конфигурации Spring для загрузки свойств пружины в Archaius:

@Configuration
public class HystrixConfig {

    @Autowired
    private CommonsConfigurationFactoryBean props;

    @PostConstruct
    public void init() {
        ConfigurationManager.install(props.getConfiguration());
    }
}

Альтернативой этой настройке может быть Spring Cloud Netflix, но для этого требуется Spring Boot.

person Tim Van Laer    schedule 01.02.2016
comment
Для меня ConfigurationManager.install (props.getConfiguration ()); заменены некоторые важные свойства. В моем случае мне пришлось сделать ConfigurationManager.loadPropertiesFromConfiguration (props.getConfiguration ()); и все заработало. Спасибо! - person Glenn Van Schil; 08.04.2021