二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断( 二 )

5.1.3 请求测试

二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
5.2 使用 feign 远程调用5.2.1 主要依赖<!--eureka 客户端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><!--feign远程调用依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId><version>1.3.5.RELEASE</version></dependency>5.2.2 配置信息# 端口server:port: 8098spring:application:name: edocmall-web# 服务名# eureka 注册中心的配置eureka:client:service-url:defaultZone: http://127.0.0.1:8096/eureka# 关闭自我保护机制,保证不可用的服务及时剔除server:enable-self-preservation: false# 开启客户端服务降级,默认是关闭的恶,需要打开feign:hystrix:enabled: true5.2.3 代码介绍
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
5.2.3.1 业务层接口//指定服务名@FeignClient(value = "https://www.huyubaike.com/biancheng/edocmall-server")public interface WebEntryService {//基于feign 远程调用edoc-server服务端提供的查询文档详情接口@GetMapping("/entry") //必须跟远程请求一直EdocEntryVO invokeEntryServiceUserFeign(@RequestParam("id") Integer id); //必须写 @RequestParam("id")// 注意 一点更要写 @RequestParam("id") 里面的参数必须写}5.2.3.1 控制层之直接调用接口@RestControllerpublic class WebEntryController {@Autowiredprivate WebEntryService webEntryService;// 根据文档编号,获取文档详情@GetMapping("/entryById")public RequestResult<EdocEntryVO> entryDetail(Integer id){log.info("------ 根据文档编号:{},获取文档详情 ------",id);//基于feign 远程调用服务端接口,获取文档详情EdocEntryVO edocEntryVO = webEntryService.invokeEntryServiceUserFeign(id);return ResultBuildUtil.success(edocEntryVO);}}5.2.4 主启动类上的注解@EnableEurekaClient// 开启 eureka 服务注册,将此服务注册到 eureka中@EnableFeignClients//开启 feign 远程调用服务5.2.5 请求测试eureka 注册中心:
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
feign远程调用:
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6、Feign的服务降级与熔断6.1 服务降级(服务消费端)6.1.1 依赖由于feign中有hystrix的依赖,所以不用单独添加;
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6.1.2 接口指定服务降级后的实现类@FeignClient(value = "https://www.huyubaike.com/biancheng/edocmall-server",fallback = WebEntryServiceImpl.class) //fallback 指定调用失败后 降级调用的数据public interface WebEntryService {......}6.1.3 实现类,具体降级服务操作@Servicepublic class WebEntryServiceImpl implements WebEntryService {@Overridepublic EdocEntryVO invokeEntryServiceUserFeign(Integer id) {//此方法,就是regn远程调用,触发服务剪辑的默认实现,正常请求不会调用//只用远程 feign调用失败,才会调用EdocEntryVO edocEntryVO = new EdocEntryVO();edocEntryVO.setId(999);edocEntryVO.setCid(0);edocEntryVO.setTitle("触发熔断服务降级");edocEntryVO.setSummary("当feign远程调用接口失败,默的默认实现");edocEntryVO.setUploadUser("feign-hystrix");edocEntryVO.setCreateDate(new Date());return edocEntryVO;}6.1.4 测试6.1.4.1 不添加服务降级时
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6.1.4.2 添加服务降级后
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6.2 服务熔断(服务提供端)6.2.1 依赖

经验总结扩展阅读