1、开启sentinel功能

在application.yml文件,开启Feign的Sentinel功能:

1
2
3
feign:
sentinel:
enabled: true # 开启feign对sentinel的支持

2、编写失败降级逻辑

业务失败后,不能直接报错,而应该返回用户一个友好提示或者默认结果,这个就是失败降级逻辑。

给FeignClient编写失败后的降级逻辑

①方式一:FallbackClass,无法对远程调用的异常做处理

②方式二:FallbackFactory,可以对远程调用的异常做处理,我们选择这种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Slf4j
@Component
public class UserClientFallbackFactory implements FallbackFactory<UserClient> {
@Override
public UserClient create(Throwable throwable) {
return new UserClient() {
@Override
public User findById(Long id) {
log.error("查询用户异常", throwable);
return new User();
}
};
}
}

在UserClient接口中使用UserClientFallbackFactory:

1
2
3
4
5
6
@FeignClient(value = "userservice", fallbackFactory = UserClientFallbackFactory.class)
public interface UserClient {

@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}

image-20231015192739599