ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

(27)java Spring Cloud企业快速开发架构之SpringCloud-使用Hystrix实现容错处理

2021-09-22 16:03:25  阅读:186  来源: 互联网

标签:callHello 27 java String Hystrix 调用 result 所示 HystrixCommand


创建一个新的 Maven 项目 hystrix-feign-demo,增加 Hystrix 的依赖,代码如下所示。

1 2 3 4 <dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>


在启动类上添加 @EnableHystrix 或者 @EnableCircuitBreaker。注意,@EnableHystrix 中包含了 @EnableCircuitBreaker。推荐分布式架构源码

 

然后编写一个调用接口的方法,在上面增加一个 @HystrixCommand 注解,用于指定依赖服务调用延迟或失败时调用的方法,代码如下所示。

1 2 3 4 5 6 @GetMapping("/callHello") @HystrixCommand(fallbackMethod = "defaultCallHello") public String callHello() {     String result = restTemplate.getForObject(");     return result; }


当调用失败触发熔断时会用 defaultCallHello 方法来回退具体的内容,定义 default-CallHello 方法的代码如下所示。

1 2 3 public String defaultCallHello() {     return "fail"; }


只要不启动 8088 端口所在的服务,调用 /callHello 接口,就可以看到返回的内容是“fail”,如图 1 所示。

 

将启动类上的 @EnableHystrix 去掉,重启服务,再次调用 /callHello 接口可以看到返回的是 500 错误信息,这个时候就没有用到回退功能了。

1 2 3 4 5 6 7 8 {   code: 500,   message: "I/O error on GET request for     "       exception is java.net.ConnectException: Connection refused         ", data:         null }


配置详解
HystrixCommand 中除了 fallbackMethod 还有很多的配置,下面我们来看看这些配置,如下表所示:

HystrixCommand 配置详解

官方的配置信息文档请参考:。

上面列出来的都是 Hystrix 的配置信息,那么在 Spring Cloud 中该如何使用呢?只需要在接口的方法上面使用 HystrixCommand 注解(如下代码所示),指定对应的属性即可。

1 2 3 4 5 6 7 8 9 @HystrixCommand(fallbackMethod = "defaultCallHello",commandProperties = {         @HystrixProperty(name="execution.isolation.strategy", value = "THREAD")     } ) @GetMapping("/callHello") public String callHello() {     String result = restTemplate.getForObject(");     return result; }

需要框架源码的朋友可以看我个人简介联系我 

 

标签:callHello,27,java,String,Hystrix,调用,result,所示,HystrixCommand
来源: https://www.cnblogs.com/Liuzhijuan/p/15320242.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有