spring 云中的 hystrix 回退问题

Issue with hystrix fallback in spring cloud

当我尝试在 spring 云中使用 HystrixCommand 回退时,方法代理不起作用。方法中抛出的异常未被hystrix命令方面捕获

我在使用 Spring Cloud Hystrix 集成时遇到了这个问题。我正在使用 spring 云 1.0.0.RC2 版本。这是一个复制问题的示例项目。

这是我使用库的方式的问题吗?

https://github.com/thekalinga/hystrix-fallback.git

我在您的 FallbackableService 中发现了 2 个问题。

1) fallbackMethod 引用了一个不存在的方法;

2) @HystrixCommand 方法(和回退)不是 public。

这个有效:

@Service
class FallbackableService {

   @Autowired
   FallbackClient fallbackClient;

   @HystrixCommand(fallbackMethod = "fallback")
   public String ping() {
    return fallbackClient.ping();
   }

   public String fallback() {
    return "PONG: from fallback";
   }

}

如果您创建回退方法只是为了处理错误,那么它可能应该是私有的,除非您想将它暴露给外界。

请记住,回退方法的签名必须与使用@HystrixCommand 注释的方法相同。您可以选择将异常作为参数添加一些业务逻辑,但如果您尝试在此方法中抛出异常,您的日志可能会显示类似 "fallback method nameMethod failed" 的内容。这是因为 Hystrys 回退是为了获取一些默认数据或存储在缓存中的数据,以在您的远程服务关闭时改善默认行为。

Here 您可以阅读很棒的文档来了解 Hystrix "think".

希望对您有所帮助。