欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2.4容错保护:Hystrix

程序员文章站 2022-06-05 19:23:12
在ribbon使用断路器 改造serice-ribbon 工程的代码,首先在pox.xml文件中加入spring-cloud-starter-hystrix的起步依赖: 引入 org.springframework.cloud

在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接口时,会执行快速失败,直接返回一组字符串,而不是等待响应超时,这很好的控制了容器的线程阻塞。