@HystrixCommand 注解 熔断、服务降级

 未来的你一定会责怪现在慵懒的你,也一定会感激现在努力的你。
所谓熔断就是说在调用服务时,在一定的时间内,调用失败的次数达到了一定的比例,调用方会认为服务处于不可用的状态,会阻止后续的请求继续发送到服务方,默认为请求失败,避免了服务器资源的过度消耗。但是这种机制不会一直持续下去,默认过一段时间会将接下来的一条请求放行(通过注解的参数设置),如果此条请求能够成功返回则表明服务可用,熔断机制结束,否则继续维持熔断状态。与之一起使用的操作有服务降级,指的是当发生熔断时,进行的后续操作,比如改变调用方式或者向上级抛出异常信息等等。
1、通过feign客户端调用服务,可以使用feign内置的Hystrix功能,注意需要在配置文件中需要开启此功能。代码:
feign.hystrix.enabled=true

另外需要写实现类来继承你的Feign客户端,并且实现相应接口,实现的内容就是发生异常时你需要处理的流程,也就是熔断机制。
如果程序正常执行没有异常抛出,是不会执行你自己实现的接口的。

@FeignClient(value = "${url1}",fallback = MyHystrix.class)
public interface FeignFacade {@RequestMapping(value = "", method= RequestMethod.GET)ResultDTO<JSONObject> sendC1Data() throws Exception;}

url为注册到服务中心的服务名,可以配置跟我这种方式一样,配置在配置文件中,也可以直接写服务名。
@RequestMapping:服务端的具体接口地址。后面是请求方式
fallback:MyHystrix为接口FeignFacade的实现类,实现sendC1Data()方法,方法内容为熔断时需要走的流程。

2、@HystrixCommand注解

首先pom引入依赖

     <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version>1.4.5.RELEASE</version></dependency>

@HystrixCommand注解是方法级别的,在你需要捕获的方法上加上注解

@HystrixCommand(fallbackMethod = "errMethod",ignoreExceptions = {ParamErrorException.class, BusinessTypeException.class})
public String myMethod(String param) throw Exception{throw new Exception("手动抛出异常);
}
    /*** 调用服务异常执行方法* */private String errMethod(String param){logger.info("熔断,调用sendC1Data服务发生异常");/**后续流程处理*/return "";}

fallbackMethod:标记的是捕获异常时需要执行的方法,方法名称跟value值要一样,我这里是errMethod。

errMethod方法的参数要跟你注解的方法参数保持一致,否则会报错。而且两个方法必须要在同一个类中,由于在同一个类中,所以errMethod的修饰符没有限制

ignoreExceptions :需要过滤掉的异常类型,可根据实际需要选择加或者不加

在项目的启动类上需要加注解

@EnableCircuitBreaker

@HystrixCommand使用相关推荐

  1. @HystrixCommand 注解的作用与注意事项

    一.说明 @HystrixCommand 注解 能对某个一个接口定制 Hystrix的超时时间. 通过修改 execution.isolation.thread.timeoutInMillisecon ...

  2. Hystrix服务降级的两种处理方式@HystrixCommand注解和定义统一fallback接口

    项目地址: 链接:https://pan.baidu.com/s/1Mxo0ltvZbpz_r8mCU-mSpw  提取码:3j4a 问题答疑: Hystrix服务保护框架,在微服务中Hystrix能 ...

  3. HystrixCommand注解含义

    public interface HystrixCommand {// HystrixCommand 命令所属的组的名称:默认注解方法类的名称String groupKey() default &qu ...

  4. SpringCloud(四)- Hystris简介及@EnableCircuitBreaker 和 @HystrixCommand 注解的使用

    唯能极于情,故能极于剑 本文转载于:http://www.codecow.cn/ 此文由四部分组成(Hystris简介.@EnableCircuitBreaker 使用.实操.总结),别着急,慢慢来 ...

  5. 【微服务架构】SpringCloud之断路器(hystrix)

    说在前面 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用 ...

  6. 用 Hystrix 构建高可用服务架构

    1 hystrix是什么 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的. Hystrix 可以让我们在分布式系统中对服务间的 ...

  7. spring cloud微服务分布式云架构--hystrix的使用

    hystrix主要作用在服务消费者,进行应用的保护,当请求的服务请求超时时,做出相应的处理,避免客户端一直进行请求等待,避免在高并发的情况出现服务器死机(请求过多,内存不足) 接下来的通过一个案例对h ...

  8. 微服务项目的整合与测试

    实验目的 掌握微服务项目的整合使用 掌握Swagger-UI的简单使用 练习内容 1.微服务项目整合 1.1.项目预览 1.1.1.在 https://github.com/shi469391tou/ ...

  9. Spring Cloud应用开发(四:服务容错保护)

    1.Spring Cloud Hystrix的使用 1.1.创建microservice-eureka-user-hystrix工程,并在其pom.xml中引入eureka和hystrix的依赖: 1 ...

最新文章

  1. Android开发---Activity的生命周期
  2. 《浪潮之巅》读书笔记汇总
  3. 在游戏中强制关机,不能对关机提示框进行操作
  4. UNITY崩溃的日志
  5. 1155: 零起点学算法62——输出矩阵
  6. Triangle HDU - 5914
  7. PAT 1114 Family Property 并查集
  8. wpf之内容超出布局是用滚动条
  9. 一文概述深度学习中的正则化(含Python代码)
  10. 高品味男人:分寸与克制
  11. arm汇编—str,mov等指令
  12. Spring Cloud微服务架构图
  13. 2019年最新-等保测评机构、等保测评公司、信息安全厂商大全
  14. arch Linux更换字体,Arch Linux 安装后的设置
  15. mysql获取上月26号_根据当前时间查询上月26号的日期 本月月25号的日期
  16. 开发者在掘金路上的选择
  17. 图床项目之后台框架设计
  18. ini文件格式和读取
  19. git commit 命令出现“fatal: unable to auto-detect email address (got '******@.(none)')错误
  20. 国网SG186工程含义

热门文章

  1. Hosts文件是做什么的
  2. 瑞格尔侯爵酒庄连续两年蝉联2022世界最佳葡萄园第二
  3. 无线MAC地址过滤怎么设置
  4. 中山大学计算机学院运动会,2014年中山大学数计学院第八届田径运动会1500米
  5. 图像透视变换原理及实现【转发】
  6. 在img标签限制图片大小
  7. 大数据高级开发工程师——HBase学习笔记(2)
  8. 冰冰学习笔记:Linux下的常用指令
  9. Python3爬虫爬取房价进行房价预测-张敏-专题视频课程
  10. C语言单元测试框架unit的使用