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

<!--导入Hystrix依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId></dependency>

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

文章插图
6.2.2 熔断 备选方法 和 熔断触发条件@Slf4j@RestControllerpublic class EntryController {@Autowiredprivate EntryService entryService;//根据 id 查询文档详情@GetMapping("/entry")@HystrixCommand(fallbackMethod = "fallbackStoryDetail")//指定 服务熔断后的备选方法public EdocEntryVO entryDetail(@RequestParam Integer id){log.info("------ 根据文档编号:{},获取文档详情 ------",id);EdocEntryVO edocEntry = entryService.getEdocEntryById(id);if (edocEntry == null){//抛出异常,触发 熔断 备选方法throw new RuntimeException("id为:"+id+"的用户不存在,触发服务熔断");}return edocEntry;}// 根据 id 查询文档详情 方法 服务熔断后的备选方案public EdocEntryVO fallbackStoryDetail(@RequestParam Integer id){//此方法,只用服务熔断时,才会被调用EdocEntryVO edocEntryVO = new EdocEntryVO();edocEntryVO.setId(999);edocEntryVO.setCid(0);edocEntryVO.setTitle("根据 id 查询文档详情 方法 服务熔断后的备选方案");edocEntryVO.setSummary("当根据id 查询不到具体用户信息时,就会触发");edocEntryVO.setUploadUser("hystrix");edocEntryVO.setCreateDate(new Date());return edocEntryVO;}}6.2.3 主启动类上的注解@EnableHystrix //开启熔断服务 旧的开启服务熔断注解: @EnableCircuitBreaker6.2.4 测试6.2.4.1 没有服务降级,也没有服务熔断 时直接返回错误;
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6.2.4.2 有服务降级,没有服务熔断 时触发服务降级;
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
6.2.4.3 有服务降级,也有服务熔断 时触发服务熔断;
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图

经验总结扩展阅读