spring 云中的 hystrix 回退问题
Issue with hystrix fallback in spring cloud
当我尝试在 spring 云中使用 HystrixCommand 回退时,方法代理不起作用。方法中抛出的异常未被hystrix命令方面捕获
我在使用 Spring Cloud Hystrix 集成时遇到了这个问题。我正在使用 spring 云 1.0.0.RC2 版本。这是一个复制问题的示例项目。
这是我使用库的方式的问题吗?
我在您的 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".
希望对您有所帮助。
当我尝试在 spring 云中使用 HystrixCommand 回退时,方法代理不起作用。方法中抛出的异常未被hystrix命令方面捕获
我在使用 Spring Cloud Hystrix 集成时遇到了这个问题。我正在使用 spring 云 1.0.0.RC2 版本。这是一个复制问题的示例项目。
这是我使用库的方式的问题吗?
我在您的 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".
希望对您有所帮助。