Hystrix信号量隔离中, 设置超时属性起作用吗?

我看有的代码里,采用Hystrix信号量隔离,信号量隔离不支持超时的,但是却用了HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS
请问这个属性是不是在下面用了也不起作用?

`
@HystrixCommand(commandKey = "doSomething", fallbackMethod = "doSomethingFallback",
commandProperties = {

            @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value = "SEMAPHORE"),  

@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS, value = "15"),
@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "50"),
@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "10"),
}
) public String doSomething() {

...  

}
`

阅读 3.6k
2 个回答

不起作用,信号量方式,不支持异步和超时。

是有效的,不知道楼上的说无效的依据是什么
从原理上来说,无论隔离策略时什么,都会走信号量的逻辑,只不过线程池策略的时候,信号量永远会返回true,而超时机制的实现是在通过信号量逻辑的校验之后,不可能受是否使用信号量策略的影响
从实践来说,测试也是有效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题