Sentinel 適配了 Feign 組件。如果想使用,除了引入 sentinel-starter 的依賴外還需要 2 個步驟:
配置文件打開 sentinel 對 feign 的支持: feign.sentinel.enabled=true
加入 openfeign starter 依賴使 sentinel starter 中的自動化配置類生效:
(1) 引入依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
(2) 開啟sentinel 支持
在工程的application.yml中添加sentinel 對 feign 的支持
feign: sentinel: enabled: true
(3)配置FeignClient
和使用Hystrix的方式基本一致,需要配置FeignClient接口以及通過 fallback 指定熔斷降級方法
//指定需要調用的微服務名稱
@FeignClient(name="shop-service-product",fallback = ProductFeginClientCallBack.class) public interface ProductFeginClient { //調用的請求路徑 @RequestMapping(value = "/product/{id}",method = RequestMethod.GET) public Product findById(@PathVariable("id") Long id); }
(4)配置熔斷方法
/** * 實現自定義的ProductFeginClient接口 * 在接口實現類中編寫熔斷降級方法 */ @Component public class ProductFeginClientCallBack implements ProductFeginClient { /** * 降級方法 */ public Product findById(Long id) { Product product = new Product(); product.setId(-1l); product.setProductName("熔斷:觸發降級方法"); return product; } }
Feign 對應的接口中的資源名策略定義:httpmethod:protocol://requesturl。 @FeignClient 注解中的所有屬性,Sentinel 都做了兼容。
ProductFeginClient 接口中方法 fifindById 對應的資源名為 GET:http://shop-service-product/product/{str}。