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

Sye*_*mar 4 circuit-breaker hystrix microservices

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

#
# Hystrix configuration
#

hystrix:
  command.default.execution.timeout.enabled: false
  command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
Run Code Online (Sandbox Code Playgroud)

pvp*_*ran 5

首先,请阅读此处的文档。对此进行了详细说明。在页面的开头,有“默认”的定义。请检查一下。

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

command.default.execution.timeout.enabled: false
Run Code Online (Sandbox Code Playgroud)

你重写它是错误的。这意味着 hystrix 不会导致任何调用超时。但您也可以在同一部分中看到,我们可以使用 commandkey 启用或禁用特定实例。

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

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

假设目前你有这个

hystrix:
  command.default.execution.timeout.enabled: false
  command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
Run Code Online (Sandbox Code Playgroud)

几天后,您可以添加类似的内容

command.myinstancekey.execution.timeout.enabled: true
Run Code Online (Sandbox Code Playgroud)

在这种情况下,仅对 myinstancekey 启用了超时,并且它将在 60000 后超时,因为它从以下位置获取值

command.default.execution.isolation.thread.timeoutInMillisecond
Run Code Online (Sandbox Code Playgroud)

如果你有类似的东西

command.myinstancekey.execution.isolation.thread.timeoutInMillisecond: 30000 
Run Code Online (Sandbox Code Playgroud)

然后将30000作为mysinstancekey的超时值