当我尝试在Spring云中使用HystrixCommand进行回退时,方法代理无效。 hystrix命令方面没有捕获到方法中抛出的异常。
我正面临Spring Cloud Hystrix集成的这个问题。我正在使用spring cloud 1.0.0.RC2发布。这是一个复制问题的示例项目。
这是我使用图书馆的方式的问题吗?
答案 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如何“思考”。
希望它有所帮助。