springCloud熔断器hystrix测试
已知提供方服务没启动,通过消费者服务调用该提供方服务,进入熔断状态,进入熔断方法。
配置的消费者服务和熔断器工厂类
调用消费者服务 成功进入熔断回调
接下来根据调试步骤走一下
当使用feign接口调用服务时,首先创建一个(org.springframework.cloud.openfeign.FeignCircuitBreakerInvocationHandler)的代理类,然后 调用invoke()方法
图中的nullablefallbackfactory就是我们定义feign接口时注解标识的熔断回滚类。
下图中的
invoke()方法代码 先配置circuitBreaker伤对象属性,然后判断feign接口是否有配置熔断回调,如果有则在抛出异常后使用this.nullableFallbackFacotry执行create(throwable)方法,由于his.nullableFallbackFacotry对象
已经被我们在创建feign接口服务时自定义了相应的javabean对象且被spring容器管理加载了,因此这个fallback对象也就是我们自定义的熔断对象,然后这个通过反射去调用代码。
((Method)this.fallbackMethodMap.get(method))这个方法就是feign服务调用的方法(我定义的方法是getTest()),fallback对象就是spring容器启动时注入的FeignControllerFallBack对象的javaBean,因此通过反射调用就进入了getTest()方法,
然后再控制台打印"feign熔断进入".
--------------------------------------------------------------------------------------
然后看看this.nullableFallbackFacotry对象是如何注入的,在spring服务启动时,
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory工厂类创建javaBean对象
然后进入docreateBean方法 找到feign类的beanRegistrar类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人