0

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

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

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

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

4

3 回答 3

3

我在您的FallbackableService.

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";
   }

}
于 2015-02-05T11:08:57.617 回答
1

如果您创建一个后备方法只是为了处理错误,那么它可能应该是私有的,除非您想将它公开给外界。

于 2015-06-23T11:15:55.367 回答
0

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

在这里你可以阅读一个很棒的文档来了解 Hystrix 是如何“思考”的。

希望能帮助到你。

于 2016-09-09T16:37:00.273 回答