老鸟飞过 , 只做学习使用,欢迎交流
1.概述
Spring Cloud Alibaba是Spring Cloud的一个子项目,OpenFeign是Spring Cloud的客户端负载均衡器,使用Spring Cloud Alibaba依然可以很方便的集成OpenFeign,如果要使用OpenFeign作为服务客户端负载均衡,那么我们需要考虑OpenFeign开启Sentinel进行服务熔断降级。
2.OpenFeign兼容Sentinel
OpenFeign与Sentinel组件集成除了引入sentinel-starter
依赖关系之外,还需要在属性文件中启用Sentinel支持:feign.sentinel.enabled=true
2.1.导入依赖
修改工程 springcloudalibaba-pay-server-1030 (这个工程之前我们是集成了OpenFeign的),增加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2.2.开启Sentinel
修改yml配置开启Sentinel
feign:
sentinel:
enabled: true #熔断
2.3.给Feign接口降级
这里跟Feign开启Hystrix降级一样,还是可以使用fallback属性
@FeignClient(value = "user-server",fallback = UserClientFallback.class)
public interface UserClient {
@GetMapping("/user/{id}")
User getById(@PathVariable Long id);
}
编写降级类,返回托底数据
@Component
public class UserClientFallback implements UserClient {
@Override
public User getById(Long id) {
return new User(-1L,"无此用户","无此用户");
}
}
3.做个小结
到这里我们已经完成了Feign和Sentinel的兼容使用,是不是很简单呢,因为它的集成方式和Hystrix简直一模一样