1. 添加依賴: sentinel,feign 2. 配置feign容許sentinel 3. 編寫: feign,請求客戶端 4. 爲客戶端添加(sentinel)異常處理類
1.添加依賴: sentinel,feign
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
2.配置feign容許sentinel
feign: sentinel: enabled: true
3.編寫: feign,請求客戶端
@FeignClient(name = "user-center") public interface UserCenterFeignClient { public ApiResult findBy(Integer id); public ApiResult getDetail(User user); }
4.爲客戶端添加(sentinel)異常處理類
方式(1).spring
// 用戶中心 Feign 接口 @FeignClient(name = "user-center",fallback = FeignClientFallback.class) public interface UserCenterFeignClient { public ApiResult findBy(Integer id); public ApiResult getDetail(User user); } // 用戶中心 Feign異常接收處理類 @Component public class UserCenterFeignClientFallback implements UserCenterFeignClient { @Override public ApiResult findBy(Integer id) { return ApiResult.error("異常"); } @Override public ApiResult getDetail(User users) { return ApiResult.error("異常"); } }
方式(2).ide
// 接口 @FeignClient(name = "user-center",fallbackFactory = FeignClientFallback.class) // 方法上能夠拿到異常 public interface UserCenterFeignClient { public ApiResult findBy(Integer id); public ApiResult getDetail(User user); } // 異常處理類 @Component @Slf4j public class UserCenterFeignClientFallbackFactory implements FallbackFactory<UserCenterFeignClient> { // 用戶中心 Feign異常接收處理類 @Override public UserCenterFeignClient create(Throwable throwable) { return new UserCenterFeignClient() { @Override public ApiResult findBy(Integer id) { log.warn("異常",throwable); return ApiResult.error("Sentinel 異常"); } @Override public ApiResult getDetail(User users) { return ApiResult.error("Sentinel 異常"); } }; } }