1、开启sentinel功能
在application.yml文件,开启Feign的Sentinel功能:
1 2 3
| feign: sentinel: enabled: true
|
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); }
|
