springcloud 熔断器Hystrix的具体使用

处理方法一:

因为熔断只是作用在服务调用这一端,因此我们根据上一篇的示例代码只需要改动spring-cloud-consumer项目相关代码就可以。因为,Feign中已经依赖了Hystrix所以在maven配置上不用做任何改动。
1、配置文件

feign.hystrix.enabled=true
1
2、创建回调类

import com.zzq.eurekastudent.client.GradeClient;
import com.zzq.eurekastudent.pojo.Grade1;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
@Component
public class GradeClientImpl implements GradeClient {

@Override
public List<Grade1> findGrads() {
//打印日志
//使用消息队列发送消息
//发送短信
List<Grade1> list = new ArrayList<Grade1>();
Grade1 grade = new Grade1();
grade.setId(0);
grade.setGradeName("出错了,执行了熔断器--第一种方法");
list.add(grade);
return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
回调接口GradeClient
在服务熔断的时候返回fallback类中的内容。

@FeignClient(name = "eureka-grade",fallback = GradeClientImpl.class)
public interface GradeClient {

@GetMapping("/grades")
List<Grade1> findGrads();
}
1
2
3
4
5
6
处理方法二:

1.添加依赖

<!-- hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
1
2
3
4
5
2.启动类添加注解@EnableHystrix和@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
//调用者加入这个注解
@EnableFeignClients
//熔断
@EnableHystrix
@EnableCircuitBreaker
public class EurekaStudentApplication {

public static void main(String[] args) {
SpringApplication.run(EurekaStudentApplication.class, args);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3.控制层添加注解 @HystrixCommand(fallbackMethod = “ddd”)和方法ddd

@GetMapping("/grades")
@ResponseBody
@HystrixCommand(fallbackMethod = "ddd")
public List<Grade1> getAllGrades(){

return gradeClient.findGrads();
}
public List<Grade1> ddd(){

//打印日志
//使用消息队列发送消息
//发送短信
List<Grade1> list = new ArrayList<Grade1>();
Grade1 grade = new Grade1();
grade.setId(0);
grade.setGradeName("出错了,执行了熔断器--方法2");
list.add(grade);
return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
以上两种方法的测试:

那我们就来测试一下看看效果吧。

依次启动eureka-server、eureka-student、eureka-grade三个项目。

浏览器中输入:http://localhost:8091/grades

返回:年级的列表
说明加入熔断相关信息后,不影响正常的访问。接下来我们手动停止eureka-grade项目再次测试:

浏览器中输入:http://localhost:8091/grades

返回:出错了,执行了熔断器–方法2

根据返回结果说明熔断成功。
---------------------

posted @ 2019-07-13 01:51  李艳艳665  阅读(881)  评论(0编辑  收藏  举报