Как динамически вводить значения свойств из файла конфигурации в аннотации Hystrix

Сейчас я изучаю 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).

spencergibb 25.02.2019 17:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
264
0

Другие вопросы по теме