如果没有定义缓存,并HystrixCommand绝对执行`run`或`fallback`

问题描述 投票:1回答:1

我需要同步等待HystrixCommand的一些逻辑来完成,所以我加的CountDownLatch,它在运行和备用释放。

public class AsyncHystrixCommand extends HystrixCommand implements SofaHystrixInvokable {

    @Override
    protected Object run() throws Exception {
        // part1 sync
        this.syncCall();
        lock.countDown();
        // part2 async
        return this.asyncCall();
    }

    @Override
    protected Object getFallback() {
        if (lock.getCount() > 0) {
            lock.countDown();
        }
    }
}

然后,主线程将通过lock.wait被阻断,但如果不执行runfallback,这将永远等待。

flowchart of Hystrix,如果没有定义缓存,可以猬保证runfallback将被执行?有没有更好的办法?

java hystrix
1个回答
0
投票

HystrixCommand作品异步使用RxJava 1.x中,但它支持同步执行。

所有您需要做的仅仅是调用execute()方法在命令中像下面。

Object result = new YourHystrixCommand().execute()`

或者你可以用FutureObservable自己使用queue()observe()的情况下等待。

© www.soinside.com 2019 - 2024. All rights reserved.