如果 Hystrix 超时,如何中断/阻塞主线程

问题描述

我在 Java 8 中使用 HystrixProperty 来设置方法的超时时间。我写了一个回退方法,其中有很多事情正在发生。一切正常,除了即使超时后,主线程也不会停止方法的执行。它肯定会调用回退方法,但不会中断/阻止主方法的执行。请看下面的例子。

客户端调用 Method1。

@HystrixCommand(fallbackMethod ="Method1Fallback",commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "40000"),@HystrixProperty(name = "execution.isolation.strategy",value = "SEMAPHORE")},commandKey = "HystrixExample")
Method1 () {
 //Line 1 -> Hystrix times out in these calls
 Some Lines of Code.. API Calls,etc.

 //Line 2 -> Rest of the code
 Some Lines of Code.. API-2 Calls,etc.  

}

Method1Fallback() {

Some lines of code.. API-3 Calls,etc. 
}

现在,hystrix 在提到的第 1 行超时,并积极调用回退方法。但是,它不会停止 Method1 的执行,而是继续调用 Method1 中的其余代码,即调用 API-2 等

  1. 我想在 Method1 超时后立即停止它的执行。
  2. 因此,我不确定哪个结果(来自 Method1 或 Method1Fallback)作为响应传递给客户端。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)