hystrix熔断、服务降级

  1. consumer导入坐标依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
    
  2. 消费者(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);
        }
    }
    
  3. 在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;
            }
        }
    
  4. 在controller上的类上增加降级服务的方法,用于熔断后执行的方法

    public Object error01(@PathVariable("uname") String uname){//用于服务熔断
            return uname+"用户不存在,请检查后重试";
        }
    
  5. 先后启动eureka、provider、consumer服务,在通过consumer中的url进行访问,输入不存在的值,则会服务降级。

posted on 2022-09-26 14:31  吃饱饱没烦恼  阅读(23)  评论(0编辑  收藏  举报