我们需要循序渐进,紧接着前面的项目,在module eureka_feign的plm.xml 添加熔断器依赖配置:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
新建一个熔断错误处理业务类,实现EurekaClientFeign service ,并返回熔断错误,配置熔断退回逻辑为错误处理类:
@Component
public class HiHystrix implements EurekaClientFeign {
@Override
public String sayHiFromFeignClient() {
return "熔断器错误";
}
}
修改EurekaClientFeign类,在@FeignClient注解中添加fallback配置快速失败处理的类,该类是Feign逻辑处理类,必须实现呗@FeignClient修饰的接口,最后需要以bean的形式注入Ioc中:
//这里声明调用eureka-lient远程服务
@FeignClient(value = "eureka-client",configuration = FeighConfig.class,fallback = HiHystrix.class)
public interface EurekaClientFeign {
//这里声明为调用eureka-client的hello远程服务
@GetMapping(value = "/hello")
String sayHiFromFeignClient();
}
配置yaml,打开熔断器:
feign:
hystrix:
enabled: true
依次启动eureka_service的peer1实例、eureka_ client两个实例,启动eureka_feign.
浏览器访问: http://localhost:8765/hi
多次刷新会看到轮巡切换访问eureka_client的两个实例接口。
停止eureka_client的两个或一个实例,查看效果,最后eureka_client 全部停止之后,就会看到进入熔断器错误处理逻辑: