在Spring云中遇到hystrix回退的问题

时间:2015-02-04 16:40:16

标签: spring-cloud hystrix netflix-feign

当我尝试在Spring云中使用HystrixCommand进行回退时,方法代理无效。 hystrix命令方面没有捕获到方法中抛出的异常。

我正面临Spring Cloud Hystrix集成的这个问题。我正在使用spring cloud 1.0.0.RC2发布。这是一个复制问题的示例项目。

这是我使用图书馆的方式的问题吗?

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

3 个答案:

答案 0 :(得分:3)

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

1)fallbackMethod提到了一种不存在的方法;

2)@HystrixCommand方法(以及后备)不公开。

这有效:

@Service
class FallbackableService {

   @Autowired
   FallbackClient fallbackClient;

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

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

}

答案 1 :(得分:1)

如果您要创建一个后备方法来处理错误,那么它可能应该是私有的,除非您想将它暴露给外部世界。

答案 2 :(得分:0)

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

Here你可以阅读一篇很棒的文档来了解Hystrix如何“思考”。

希望它有所帮助。