我正在使用 HystrixCommand 类为我的代码提供断路器功能。
我创建了以下类,它封装了带有回退的函数执行:
class FunctionWithFallback<T> extends HystrixCommand<T> {
private final Supplier<T> function;
private final Function<Throwable, T> fallback;
protected FunctionWithFallback(final Supplier<T> function, final Function<Throwable, T> fallback,
final String groupKey, final String commandKey) {
super(HystrixCommand.Setter
.withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey))
.andCommandKey(HystrixCommandKey.Factory.asKey(commandKey)));
this.function = function;
this.fallback = fallback;
}
@Override
protected T run() {
return function.get();
}
@Override
protected T getFallback() {
return fallback.apply(getExecutionException());
}
}
我陷入了我应该为后备提供什么例外的问题上。HystrixCommand 中有两种方法返回异常:getExecutionException
和getFailedExecutionException
我已经阅读了 javadoc,但我仍然不完全清楚我应该在后备函数中使用哪一个来获取从提供的函数抛出的原始异常。
你会推荐什么,为什么?