使用环境变量设置Hystrix超时

时间:2017-02-06 16:26:33

标签: spring-cloud hystrix spring-cloud-netflix

要更改Hystrix的默认请求超时(1000毫秒),必须设置以下属性:              hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

相应的环境变量是什么?

我想"调整"在我最喜欢的云平台上超时而不先触及源代码。 我很确定这个不起作用:HYSTRIX_COMMAND_DEFAULT_EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS=2000

编辑:Spring Cloud Camden / Spring Boot 1.4发现问题。

5 个答案:

答案 0 :(得分:5)

可以从应用程序配置中引用VM选项和环境变量,这通常是设置具有较长名称的属性的更方便的方法。

例如,可以在application.yml中定义以下引用:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: ${service.timeout}

将从VM选项-Dservice.timeout=10000解析,将默认Hystrix命令超时设置为10秒。环境变量更简单 - 感谢relaxed binding,其中任何一个都可行(export示例适用于Linux):

  • export service.timeout=10000
  • export service_timeout=10000
  • export SERVICE.TIMEOUT=10000
  • export SERVICE_TIMEOUT=10000

常见的方法是将lowercase.dot.separated用于VM参数,将ALL_CAPS_WITH_UNDERSCORES用于环境变量。

答案 1 :(得分:1)

使用SPRING_APPLICATION_JSON环境变量

找到更多解决方法而不是解决方案

SPRING_APPLICATION_JSON='{ "hystrix" : { "command" : { "default" : { "execution" : { "isolation" : { "thread" : { "timeoutInMilliseconds" : 3000 } } } } } } }'

答案 2 :(得分:1)

您可以使用Spring config yaml文件,请在以下链接中进一步阅读

https://github.com/spring-cloud/spring-cloud-netflix/issues/321

答案 3 :(得分:1)

您可以使用默认值尝试表达式:

hystrix.command.default.execution.isolation.thread.timeoutIn‌Milliseconds: ${SERVICE_TIMEOUT:2000}

如果您有SERVICE_TIMEOUT系统变量 - 它将由应用程序使用,否则将会获取默认值。

答案 4 :(得分:0)

VM选项-Dhystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000对我有用。但是,它具有副作用,因此,由于系统属性的优先级很高,因此您无法在Java代码中更改config值。

ConfigurationManager.getConfigInstance().setProperty(
"hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds", 3000);// it doesn't work