Как установить свойство set a HystrixProperty на симулированный запрос с spring cloud?


Согласно документации, при использовании Feign с Hystrix каждый запрос оборачивается в команду Hystrix.

Можно ли задать свойства Hystrix для этих команд? Я хотел бы сделать что-то вроде этого:

@RequestMapping(commandProperties = {
    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000")})
List<Team> findAll();

Или:

@FeignClient(name = "teams", commandProperties = {
    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000")})

Для записей я уже пытался использовать свойства, но это не сработало. Эти работают:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
hystrix.command.findAll.execution.timeout.enabled=false
hystrix.command.default.execution.timeout.enabled=false

Но это не так:

hystri‌​x.command.findAll.ex‌​ecution.isolation.thread.timeoutInMillis‌​econds=20000

Действительно, мы можем прочитать следующий комментарий в HystrixCommandProperties класс:

    //this property name is now misleading.  //TODO figure out a good way to deprecate this property name
    this.executionTimeoutInMilliseconds = getProperty(propertyPrefix, key, "execution.isolation.thread.timeoutInMilliseconds", builder.getExecutionIsolationThreadTimeoutInMilliseconds(), default_executionTimeoutInMilliseconds);

EDIT: я попытался использовать запрос feign.Вариант, но эти свойства, похоже, не распространяются на hystrix.

2 3

2 ответа:

Проблема решена: это была проблема кодирования. Я скопировал/вставил строку из документации, но она не была закодирована UTF-8 (хотя дисплей STS был правильным).

Вы также можете установить свойства программно, как показано ниже.

ConfigurationManager.getConfigInstance()
        .setProperty("hystri‌​x.command.default.ex‌​ecution.isolation.th‌​read.timeoutInMillis‌​econds", 1500);