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类

 

posted on 2024-06-14 01:11  丶柚子  阅读(2)  评论(0编辑  收藏  举报

导航