【问题标题】:Hystrix command requiring cleanup when timed-out超时时需要清理的 Hystrix 命令
【发布时间】: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 框架是否为此提供了另一种方式?

【问题讨论】:

  • 有人有建议吗?

标签: hystrix


【解决方案1】:

据我所知,如果发生超时,您无法在 run() 方法中可靠地确定:run() 方法在调用者等待时在单独的线程中运行。当您检查run() 方法是否发生超时时,调用线程可能会超时并且您不会知道。您建议的代码大部分时间都可以工作,但每次调用都有一个小的时间窗口,它不会工作。

检查是否发生超时的保存位置是fallback() 方法。请注意,您的方法中描述的原始“做事”此时可能仍在运行:Hystrix 将向原始run() 方法发送java.lang.Thread.interrupt()。根据您的“做事”,结果可能会有所不同。

我希望这是对您问题的回答。如果您可以在问题中提供更多信息,我可以更新我的答案以包含它。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2015-02-07
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2013-01-17
    • 2012-01-17
    相关资源
    最近更新 更多