gpt4 book ai didi

java - 当没有定义缓存时,HystrixCommand肯定执行 `run`还是 `fallback`

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:33 33 4
gpt4 key购买 nike

我需要同步等待HystrixCommand的一些逻辑完成,所以我添加了一个CountDownLatch并在run和fallback中释放它。

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 ,如果没有定义cache,Hystrix能否保证runfallback会被执行?还有更好的办法吗?

最佳答案

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

您所需要做的只是使用如下命令调用 execute() 方法。

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

或者,如果使用 queue()observe(),您可以自己使用 FutureObservable 等待。

关于java - 当没有定义缓存时,HystrixCommand肯定执行 `run`还是 `fallback`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54418635/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com