文章引流
一个简单而使用的API管理工具
版本号
| spring boot 2.7.17 |
| spring-cloud-dependencies 2021.0.8 |
| spring-cloud-circuitbreaker-resilience4j 2.1.7 |
| spring-cloud-starter-alibaba-seata 2021.1 |
| jdk 1.8 |
复制
原因分析
- 未配置属性
feign.circuitbreaker.enabled=true
# 未开启该配置,则该代码对应的bean 不会初始化
FeignAutoConfiguration.CircuitBreakerPresentFeignTargeterConfiguration.circuitBreakerFeignTargeter()
复制
- seata 的配置对feign存在一定的影响
| SeataFeignClientAutoConfiguration.feignBuilder() |
| |
| |
| |
复制
修复方案
| |
| |
| |
| @Bean |
| @ConditionalOnBean(CircuitBreakerFactory.class) |
| public Feign.Builder circuitBreakerFeignBuilder(BeanFactory beanFactory) throws Exception { |
| |
| Constructor<SeataFeignClient> declaredConstructor = |
| SeataFeignClient.class.getDeclaredConstructor(BeanFactory.class); |
| declaredConstructor.setAccessible(Boolean.TRUE); |
| SeataFeignClient seataFeignClient = declaredConstructor.newInstance(beanFactory); |
| return FeignCircuitBreaker.builder().client(seataFeignClient); |
| } |
复制