美文网首页
使用Spring Cloud Fegin + Hystrix的f

使用Spring Cloud Fegin + Hystrix的f

作者: smlrole | 来源:发表于2021-09-03 19:59 被阅读0次

    背景

    服务使用Spring Cloud Fegin + Hystrix 来使用RPC调用
    Spring Cloud 版本:2.1.3.RELEASE

    报错信息如下:


    AccDingtalkClient#getDingtalkAuthAccessToken(String) failed and fallback failed
    

    这个日志只能看出失败并且降级也失败了,但是具体怎么失败了也没有说明,所以只能本地断点看下到底是什么错误

    过程

    我们知道Hystrix最主要的抽象类是HystrixCommand;
    Fegin-Hystrix的HystrixInvocationHandler.invoke则是主要用于FeginClient降级的代码块(对于其他源码实现感兴趣的人可以去查哈,我这儿只是讲调试看到的主要地方),所以我在这个代码块中打断点(调试的时候还去HystrixCommand打了断点,但是一直没有找到真正的原因):


    image.png

    很容易看出,实际错误是没有权限,这是第一个问题,那为什么fallback会失败呢,继续断点


    image.png

    fallbackFactory没有值,我看了Client定义是有值的,所以我又重新启动一遍,断点打在fallbackFactory赋值的地方


    image.png
    还是为空,看了其他的client,都不是空的,然后再去看FeginClient的定义
    image.png

    所以是Fallback定义写混了,fallback的方法也没有找到,导致failback failed

    后记

    原因很简单,只是想记录下解决问题的方式,也许对你解决问题有帮助

    相关文章

      网友评论

          本文标题:使用Spring Cloud Fegin + Hystrix的f

          本文链接:https://www.haomeiwen.com/subject/yqlkwltx.html