hystrix熔断、服务降级
-
consumer导入坐标依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
-
消费者(consumer)项目的启动类上添加注解:@EnableCircuitBreaker
@SpringBootApplication @EnableEurekaClient @RibbonClient(name = "provider",configuration = RibbonRule.class) @EnableCircuitBreaker public class Consumer8002Application { public static void main(String[] args) { SpringApplication.run(Consumer8002Application.class, args); } }
-
在consumer的controller上的对应方法添加注解:@HystrixCommand(fallbackMethod = "error01")
@GetMapping("/getuser/{uname}") @HystrixCommand(fallbackMethod = "error01") public Object getOne(@PathVariable("uname") String uname) throws Exception{ ShiroUser u=restTemplate.getForObject(url+"/getOne/"+uname, ShiroUser.class); System.out.println(u); if (u==null){ throw new Exception("查询用户不存在");//手动创建异常 }else{ return u; } }
-
在controller上的类上增加降级服务的方法,用于熔断后执行的方法
public Object error01(@PathVariable("uname") String uname){//用于服务熔断 return uname+"用户不存在,请检查后重试"; }
-
先后启动eureka、provider、consumer服务,在通过consumer中的url进行访问,输入不存在的值,则会服务降级。