当我尝试在 Spring Cloud 中使用 HystrixCommand 回退时,方法代理不起作用。方法中抛出的异常没有被 hystrix 命令方面捕获。
我在 Spring Cloud Hystrix 集成中遇到了这个问题。我正在使用 spring cloud 1.0.0.RC2 版本。这是一个复制问题的示例项目。
这是我使用图书馆的方式的问题吗?
当我尝试在 Spring Cloud 中使用 HystrixCommand 回退时,方法代理不起作用。方法中抛出的异常没有被 hystrix 命令方面捕获。
我在 Spring Cloud Hystrix 集成中遇到了这个问题。我正在使用 spring cloud 1.0.0.RC2 版本。这是一个复制问题的示例项目。
这是我使用图书馆的方式的问题吗?
我在您的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";
}
}
如果您创建一个后备方法只是为了处理错误,那么它可能应该是私有的,除非您想将它公开给外界。
请记住,您的回退方法的签名必须与使用 @HystrixCommand 注释的方法相同。您可以选择将异常作为参数添加一些业务逻辑,但如果您尝试在此方法中抛出异常,您的日志可能会显示类似“回退方法名称方法失败”的内容。这是因为 Hystrys 回退旨在获取一些默认数据或存储在缓存中的数据,以改善远程服务关闭时的默认行为。
在这里你可以阅读一个很棒的文档来了解 Hystrix 是如何“思考”的。
希望能帮助到你。