Feign整合Sentinel
1、引入sentinel依赖
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、修改被调用方的微服务配置
feign:
sentinel:
enabled: true # 开启feign对sentinel的支持
3、编写失败降级逻辑
业务失败后,不能直接报错,而应该返回用户一个友好提示或者默认结果,这个就是失败降级逻辑。
- 方式一:FallbackClass,无法对远程调用的异常做处理。(不推荐)
- 方式二:FallbackFactory,可以对远程调用的异常做处理。(推荐)
FallbackFactory实现:
- 步骤一:项目中定义类,实现FallbackFactory
这里以UsreClient为例
import com.itheima.feign.client.UserClient;
import com.itheima.feign.pojo.User;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class UserClientFallbackFactory implements FallbackFactory<UserClient> {
@Override
public UserClient create(Throwable cause) {
return new UserClient() {
@Override
public User findById(Long id) {
log.info("用户降级逻辑");
return new User();
}
};
}
}
- 步骤二:将该UserClientFallbackFactory注册为一个Bean
@Bean
public UserClientFallbackFactory userClientFallbackFactory(){
return new UserClientFallbackFactory();
}
- 步骤三:项目中的UserClient接口中使用UserClientFallbackFactory