要更改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发现问题。
答案 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.timeoutInMilliseconds: ${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