超时时需要清理的 Hystrix 命令
Posted
技术标签:
【中文标题】超时时需要清理的 Hystrix 命令【英文标题】:Hystrix command requiring cleanup when timed-out 【发布时间】:2015-08-27 00:44:33 【问题描述】:我有一个 Hystrix 命令,在超时时需要清理。 我们目前的处理方法如下:
public class MyCommand extends HystrixCommand<MyResponse>
@Override
public MyResponse run()
// do stuff
// Cleanup if timed out
if( this.isResponseTimedOut() )
// perform cleanup
return myresponse;
Hystrix 框架是否为此提供了另一种方式?
【问题讨论】:
有人有建议吗? 【参考方案1】:据我所知,如果发生超时,您无法在 run()
方法中可靠地确定:run()
方法在调用者等待时在单独的线程中运行。当您检查run()
方法是否发生超时时,调用线程可能会超时并且您不会知道。您建议的代码大部分时间都可以工作,但每次调用都有一个小的时间窗口,它不会工作。
检查是否发生超时的保存位置是fallback()
方法。请注意,您的方法中描述的原始“做事”此时可能仍在运行:Hystrix 将向原始run()
方法发送java.lang.Thread.interrupt()
。根据您的“做事”,结果可能会有所不同。
我希望这是对您问题的回答。如果您可以在问题中提供更多信息,我可以更新我的答案以包含它。
【讨论】:
以上是关于超时时需要清理的 Hystrix 命令的主要内容,如果未能解决你的问题,请参考以下文章