Сейчас я изучаю Spring Cloud.
Мы знаем, что если удаленный файл конфигурации обновлен, обратившись к «localhost: 10000/refresh», мы можем динамически получать значения пользовательских свойств удаленного файла конфигурации на сервере конфигурации. Я хотел бы спросить, как мне динамически вводить эти значения в аннотации Hystrix.
Мой удаленный файл конфигурации «licenseservice.yml», я поместил его в репозиторий git:
example.property: Я по умолчанию. Я из git сейчас.
пример.timeoutInMilliseconds: 12000
сервер: порт: 10000
эврика: пример: предпочтительный IP-адрес: правда ...
Класс Java, который я использовал для получения значений в файле конфигурации:
@Component
@RefreshScope
public class ServiceConfig {
@Value("${example.property}")
private String exampleProperty;
@Value("${example.timeoutInMilliseconds}")
private String timeoutInMilliseconds;
public String getExampleProperty() {
return exampleProperty;
}
public String getTimeoutInMilliseconds(){
return timeoutInMilliseconds;
}
}
Метод Java, использующий аннотации Hystrix:
@HystrixCommand(fallbackMethod = "buildFallbackLicenseList",
threadPoolKey = "licenseByOrgThreadPool",
threadPoolProperties = {
@HystrixProperty(name = "coreSize",value = "30"),
@HystrixProperty(name = "maxQueueSize", value = "10")
},
commandProperties = {
@HystrixProperty(name =
"circuitBreaker.requestVolumeThreshold",value = "10"),
@HystrixProperty(name =
"circuitBreaker.errorThresholdPercentage",value = "75"),
@HystrixProperty(name =
"circuitBreaker.sleepWindowInMilliseconds",value = "7000"),
@HystrixProperty(name =
"metrics.rollingStats.timeInMilliseconds",value = "15000"),
@HystrixProperty(name =
"metrics.rollingStats.numBuckets",value = "5"),
@HystrixProperty(name =
"execution.isolation.thread.timeoutInMilliseconds",value = ???)
})
public List<License> getLicensesByOrg(String organizationId){
System.out.println("SERVICE CONFIG TEST
"+serviceConfig.getExampleProperty());
System.out.println("SERVICE CONFIG TEST
"+serviceConfig.getTimeoutInMilliseconds());
randomlyRunLong();
return licenseRepository.findByOrganizationId(organizationId);
}
Моя проблема в том, что я хочу динамически изменять значение переменной «execution.isolation.thread.timeoutInMilliseconds» (используя значение «example.timeoutInMilliseconds» в файле .yml). Вы видите, что я поставил три вопросительных знака в этом месте, потому что я не знаю, что писать, может кто-нибудь, пожалуйста? Скажи мне, спасибо.




Свойства AFAIK
@HystrixCommandуже динамически обновляются, если вы используете задокументированные свойства в файлах конфигурации загрузки (т.е. без@HystrixProperty).