Feign實現熔斷


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}。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM