zoukankan      html  css  js  c++  java
  • 第十五节--Hystrix之服务降级

    1 .先从8001自身找问题:设置自身调用超时时间的峰值,峰值内可以正常运行,超时了需要有兜底的方法处理,作服务降级fallback
        在服务端cloud-provider-hystrix-payment8001工程中设置超时,消费者去调用
       第一步:
     /**
          * 让线程睡眠5秒再执行方法,超时就去执行timeoutHandler方法返回 , @HystrixProperty设置该方法在3秒内执行
          * 目的让方法执行延迟去执行timeoutHandler方法
         */
         @HystrixCommand(fallbackMethod ="timeoutHandler",commandProperties = {
         @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
         })
          @GetMapping("/admin/findPaymentList")
         public CommonResult findPaymentList(){
         try {
         Thread.sleep(5000);
         }catch (Exception e){
    
         }
         List<Payment> paymentList = paymentService.findPaymentList();
         log.info("查询所有数据");
         if(paymentList!=null){
         return new CommonResult(200,"查找数据成功",paymentList);
         }
         return new CommonResult(400,"没有对应的记录");
        }
    //超时需要执行的方法
    public CommonResult timeoutHandler(){
    return new CommonResult(400,"服务正忙,请稍后再试");
    }
    第二步:主启动加上@EnableCircuitBreaker //激活hystrix
     
    第三步:测试,启动服务端8001,消费端cloud-consumer-feign-hystrix-order80,调用findPaymentList()方法
           消费端通过接口OpenFeign调用,查看执行返回我们所设置超时的方法
     
     
     
    异常同理
     

     
    80订单消费端,可以更好的保护自己,依样进行客户端降级保护 cloud-consumer-feign-hystrix-order80工程
    第一步:在yml文件中配置
    #启用hystrix
    feign:
      hystrix:
        enabled: true
    第二步:在主启动类上加注解@EnableHystrix
     
    第三步:controller代码
    /**
    * 1.5秒内如果返回则OK,否则执行timeoutHandler方法返回友好提示
    * @return
    */
    @HystrixCommand(fallbackMethod ="timeoutHandler",commandProperties = {
    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "1500")
    })
    @GetMapping("/consumer/findPaymentList")
    public CommonResult findPaymentList(){
    log.info("查询所有数据");
    return orderService.findPaymentList();
    }
    //超时需要执行的方法
    public CommonResult timeoutHandler(){
    return new CommonResult(400,"消费端服务正忙,请稍后再试");
    }
    第四步:测试
  • 相关阅读:
    使用 VisualVM 进行性能分析及调优
    数据库乱码,频繁中断
    mysql 查看数据库中所有表的记录数
    MySQL数据库设置远程访问权限方法小结
    详解使用DockerHub官方的mysql镜像生成容器
    Docker的安装和使用说明——Docker for Windows
    CentOS7安装Docker与使用篇
    正则提取字符串中的字符串
    java parse 带英文单词的日期字符串 转 date (转化新浪微博api返回的时间)
    mysql function 中使用游标
  • 原文地址:https://www.cnblogs.com/hexublog/p/13681870.html
Copyright © 2011-2022 走看看