微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果 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 举报,一经查实,本站将立刻删除。