Сейчас я изучаю Spring Cloud.
Мы знаем, что если файл удаленной конфигурации обновляется, с помощью доступа к «localhost: 10000 / refresh» мы можем динамически получать значения пользовательских свойств удаленногофайл конфигурации на сервере конфигурации.Я хотел бы спросить, как мне динамически внедрить эти значения в аннотации Hystrix.
Мой удаленный файл конфигурации «licenseservice.yml», я поместил его в репозиторий git:
example.propertyЯ по умолчанию.Я из git.
example.timeoutInMilliseconds: 12000
сервер: порт: 10000
eureka: экземпляр: предпочитаемый-ip-адрес: true ...
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);
}
Моя проблема в том, что яхотите динамически изменить значение переменной «execute.isolation.thread.timeoutInMilliseconds» (используя значение «example.timeoutInMilliseconds» в файле .yml).Вы видите, что я написал три знака вопроса в этом месте, потому что я не знаю, что написать, может кто-нибудь, пожалуйста?Скажи мне спасибо.