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.7k
2 个回答

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

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

推荐问题