• 第十五节--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,"消费端服务正忙,请稍后再试");
    }
    第四步:测试
  • 相关阅读:
    软件系统的稳定性
    项目从.net 2.0 升级到。.net 4.0项目以后发现网站运行十分缓慢
    学习英语小助手(阅读粘贴的英文,使用MVVM)
    如何在IIS6,7中部署ASP.NET网站
    基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
    面向对象软件设计原则—— 软件实体的设计原则
    Django实战
    聊聊豆瓣阅读kindle版
    多线程的基本概念
    nopCommerce的源代码结构和架构
  • 原文地址:https://www.cnblogs.com/hexublog/p/13681870.html
Copyright © 2020-2023  润新知