1. 引用断路器maven包,在配置文件中启用熔断器
Spring Cloud 2020.0.0(Ilford)之前的版本,如:Finchley、Greenwich、Hoxton,配置如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
feign:
hystrix:
enabled: true
Spring Cloud 2020.0.0(Ilford)及之后的版本,如:2020.0.x(Ilford)、2021.0.x(Jubilee)、2022.0.x(Kilburn),Spring Cloud 移除了 Netflix Hystrix,转而推荐通用熔断抽象 Spring Cloud CircuitBreaker,支持多种实现(如 Resilience4j、Sentinel),配置如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
feign:
circuitBreaker:
enabled: true
2. @FeignClient 中需指定 fallbackFactory 属性
@FeignClient(name = "service-name", path = "service-name", contextId = "com.xxx.MyClient", fallbackFactory = MyFallbackFactory.class)
public interface MyClient {
}
3. FallbackFactory 需正确注入,FallbackFactory 实现类需被 Spring 管理添加 @Component
@Component
public class MyFallbackFactory implements FallbackFactory<MyClient> {
}