首页 > 解决方案 > Hystrix 回退方法最佳实践

问题描述

好的,所以我在这个主题上找不到任何有用的材料,我发现的大部分文章都有一个用 @HystrixCommand 注释的方法并定义了一个备用方法。

我发现的另一个解决方案是使用 @DefaultProperties(defaultFallback = "fallbackMethod") ,但问题是这些方法需要具有兼容的返回类型。

不幸的是,在我的服务中,我有许多具有完全不同签名的方法,而且我需要掌握可投掷的东西(在文档中提到你不能有任何参数用于默认的后备方法)。这些方法看起来像这样:

@Service
@RequiredArgsConstructor
public class MyService {

  private final FeignClient feignClient;

  @Override
  public String methodA(final CustomObjectA o, final String entity) {
    ...
  }


  @Override
  public String methodB(final String collection, final Map<String, Object> requestBody) {
    ...
  }

  @Override
  public String methodC(final String collection, final String id, final Map<String, Object> requestBody) {
    ...
  }
}

而且ofc我在服务中有超过3种方法def ...

我真正想避免的事情是制作 20 种 hystrix 默认后备方法。

有没有一种方法可以为所有方法定义标准回退,无论它们有什么签名,还是我坚持为每个方法定义一个回退方法?

提前致谢!!

标签: javaspring-bootspring-cloudhystrixfallback

解决方案


您将不得不为每种方法实现一个回退。

然而,使用FallbackFactory可能会使这更容易,并允许每个方法调用一个可重用的方法。

如果每种方法都相同,也许您真的不想要 hystrix 后备。所有的 try catch 都可能解决同样的问题。


推荐阅读