一、博客背景
在前面的博客里我们讲解了数据服务dataserver,访问服务feignserver,页面展示是通过feignserver服务调用dataserver来展示数据,那么问题来了,假如我的数据服务挂了,访问服务feignserver,访问http://127.0.0.1:8685/getdatas 就会出现下面的图片
显然,这样的提示信息是非常不友好的,所有本篇博客讲解断路器的一些简单使用。当被访问的微服务无法使用的时候,当前服务能够感知这个现象,并且提供一个备用的方案出来。所以本篇博客将继续对feignserver进行修改
二、修改pom文件
增加引入相关依赖
<!-- 引起断路器包依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
三、修改feign客户端
注解由原来的@FeignClient(value = "DATA-SERVER")
修改为@FeignClient(value = "DATA-SERVER",fallback = ClientFeignHystrix.class)。fallback指定ClientFeignHystrix降级类,这就表示,如果访问的 DATA-SERVER 不可用的话,就调用 ClientFeignHystrix来进行反馈信息。
package tp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @Package: com.tp
* @ClassName: FeignClientServer
* @Author: tanp
* @Description: ${description}
* @Date: 2020/7/20 16:59
*/
@Service
@FeignClient(value = "DATA-SERVER",fallback = ClientFeignHystrix.class)
public interface FeignClientServer {
@GetMapping("/datas")
public List<String> getDatas();
}
四、新增 ClientFeignHystrix
新增ClientFeignHystrix类实现FeignClientServer方法
package com.tp;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
/**
* @Package: com.tp
* @ClassName: ClientFeignHystrix
* @Author: tanp
* @Description: ${description}
* @Date: 2020/7/22 15:27
*/
@Component
public class ClientFeignHystrix implements FeignClientServer{
@Override
public List<String> getDatas() {
String[] arr = {"nothing","nothing","nothing"};
return Arrays.asList(arr);
}
}
五、修改application.yml文件
在配置文件里开启断路器
feign.hystrix.enabled: true
六、访问查看结果
访问http://127.0.0.1:8685/getdatas,可以看到即便数据服务dataserver服务挂掉了,页面上也展示自定义的数据页面