开启依赖:
在pay中通过feign.hystrix.enabled=true
开启Hystrix
eureka:
client:
serviceUrl:
defaultZone: http://localhost:10010/eureka/
instance:
instance-id: pay-server
spring:
application:
name: pay-server
server:
port: 10040
feign:
hystrix:
enabled: true #开启hystrix熔断支持
拖底实现类编写:
实现Feign的客户端接口
//要交给spring去管理
@Component
//FallbackFactory的泛型为实现的Feign的客户端接口
public class FeignClientHystrixFactory implements FallbackFactory<FeignClient> {
@Override
public FeignClient create(Throwable throwable) {
return new FeignClient() {
@Override
public User getById(Long id) {
//拖底的数据,要返回的是Feign所使用的对象
return new User(1L,"系统繁忙,请稍后再试","错误了");
}
};
}
}
注意:要使用Hystrix必须将实现类交给spring管理,打上@Component注解;
FallbackFactory<>为固定的格式,泛型里面必须为Feign的客户端接口的类名
返回值要是Feign所使用的类
改造Feign的客户端接口:
在@FeignClient中加上fallbackFactory = FeignClientHystrixFactory.class
FeignClientHystrixFactory为feign的实现类
@FeignClient(value = "user-server",fallbackFactory = FeignClientHystrixFactory.class)
public interface FeignClient {
@GetMapping("/user/{id}")
User getById(@PathVariable("id") Long id);
}