2.4容错保护:Hystrix
在ribbon使用断路器
改造serice-ribbon 工程的代码,首先在pox.xml文件中加入spring-cloud-starter-hystrix的起步依赖:
引入
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-hystrix</artifactid>
</dependency>
在程序的启动类serviceribbonapplication 加@enablehystrix注解开启hystrix:
@springbootapplication
@enablediscoveryclient
@enablehystrix
public class serviceribbonapplication {
public static void main(string[] args) {
springapplication.run(serviceribbonapplication.class, args);
}
@bean
@loadbalanced
resttemplate resttemplate() {
return new resttemplate();
}
}
改造helloservice类,在hiservice方法上加上@hystrixcommand注解。该注解对该方法创建了熔断器的功能,并指定了fallbackmethod熔断方法,熔断方法直接返回了一个字符串,字符串为”hi,”+name+”,sorry,error!”,代码如下:
@service
public class helloservice {
@autowired
resttemplate resttemplate;
@hystrixcommand(fallbackmethod = "hierror")
public string hiservice(string name) {
return resttemplate.getforobject("http://service-hi/hi?name="+name,string.class);
}
public string hierror(string name) {
return "hi,"+name+",sorry,error!";
}
}
启动:service-ribbon 工程,当我们访问http://localhost:8764/hi?name=forezp,浏览器显示:
hi forezp,i am from port:8762
此时关闭 service-hi 工程,当我们再访问http://localhost:8764/hi?name=forezp,浏览器会显示:
hi ,forezp,orry,error!
这就说明当 service-hi 工程不可用的时候,service-ribbon调用 service-hi的api接口时,会执行快速失败,直接返回一组字符串,而不是等待响应超时,这很好的控制了容器的线程阻塞。
上一篇: C# -- 多线程向同一文件写入
推荐阅读
-
详解Spring Cloud Hystrix断路器实现容错和降级
-
spring cloud 使用Hystrix 实现断路器进行服务容错保护的方法
-
详解Spring Cloud Hystrix断路器实现容错和降级
-
spring cloud 使用Hystrix 实现断路器进行服务容错保护的方法
-
springcloud学习之路: (四) springcloud集成Hystrix服务保护
-
2.4容错保护:Hystrix
-
spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
-
Spring Cloud(四):服务容错保护 Hystrix【Finchley 版】
-
微服务架构实战学习笔记 第五章 Spring Cloud Netflix Hystrix与服务容错
-
微服务容错限流Hystrix入门