【问题标题】:Issue with hystrix fallback in spring cloud春季云中的 hystrix 回退问题
【发布时间】:2015-02-04 16:40:15
【问题描述】:

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

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

这是我使用库的方式有问题吗?

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

【问题讨论】:

    标签: spring-cloud hystrix netflix-feign


    【解决方案1】:

    我在您的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";
       }
    
    }
    

    【讨论】:

    • 复制粘贴错误我猜..抱歉麻烦..谢谢
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2017-06-13
        • 1970-01-01
        • 2012-02-01
        • 2019-05-18
        • 2016-09-07
        • 2015-07-25
        • 2011-10-19
        • 1970-01-01
        • 2016-06-29
        相关资源
        最近更新 更多