在 Hystrix 中使用 execution.timeout.enabled 和 execution.isolation.thread.timeoutInMilliseconds

Posted

技术标签:

【中文标题】在 Hystrix 中使用 execution.timeout.enabled 和 execution.isolation.thread.timeoutInMilliseconds【英文标题】:Use of execution.timeout.enabled along with execution.isolation.thread.timeoutInMilliseconds in Hystrix 【发布时间】:2020-01-25 10:13:40 【问题描述】:

在我们的项目中,我们使用下面的 Hystrix 配置。我对 command.default.execution.timeout.enabled 属性 感到困惑。它被设置为 false,但我们还有另一个属性指定 timeoutInMilliseconds,根据我的理解,它指定了调用者将观察到超时的时间。因此,如果执行超时首先设置为 false,那么拥有第二个属性有什么意义呢?如果我的理解不正确,请告诉我

#
# Hystrix configuration
#

hystrix:
  command.default.execution.timeout.enabled: false
  command.default.execution.isolation.thread.timeoutInMilliseconds: 60000

【问题讨论】:

【参考方案1】:

首先,请浏览文档here。详细说明。在页面的开头,有“默认”的定义。请检查一下。

现在来回答您的具体问题 默认情况下,command.default.execution.timeout.enabled 值设置为 true。正如您在此section 中看到的那样。所以用这样的代码

command.default.execution.timeout.enabled: false

您将其覆盖为假。这意味着任何调用都不会被 hystrix 超时。但是您也可以在同一部分中看到,我们可以使用命令键为特定实例启用或禁用。

同样的事情也适用于command.default.execution.isolation.thread.timeoutInMilliseconds

我们有一个默认值,我们也可以为特定的命令键更改这个值。

假设你现在有这个

hystrix:
  command.default.execution.timeout.enabled: false
  command.default.execution.isolation.thread.timeoutInMilliseconds: 60000

几天后你可以添加类似的东西

command.myinstancekey.execution.timeout.enabled: true

在这种情况下,只为 myinstancekey 启用超时,它会在 60000 时超时,因为它从

获取值
command.default.execution.isolation.thread.timeoutInMillisecond

如果你有类似的东西

command.myinstancekey.execution.isolation.thread.timeoutInMillisecond: 30000 

然后将 30000 作为 mysinstancekey 的超时值

【讨论】:

以上是关于在 Hystrix 中使用 execution.timeout.enabled 和 execution.isolation.thread.timeoutInMilliseconds的主要内容,如果未能解决你的问题,请参考以下文章

Feign中使用hystrix

Hystrix使用及其配置详解

Hystrix使用及其配置详解

Spring env,我是不是仍应在新项目中使用 Hystrix

小白使用Hystrix

Hystrix入门教程