添加依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-openfeign</artifactId>
  8. </dependency>

配置文件

  1. spring:
  2. application:
  3. name: order-service-feign #应用名称
  4. cloud:
  5. sentinel:
  6. transport:
  7. port: 8719
  8. dashboard: localhost:8080
  9. #对Feign开启对sentinel的支持
  10. feign:
  11. sentinel:
  12. enabled: true # 添加feign对sentinel的支持

如果想要做服务的容错并且要捕获日志、异常信息,那我们就可以使用fallbackFactory

熔断降级

feign的注解@FeignClient :fallbackFactory与fallback方法不能同时使用,这个两个方法其实都类似于Hystrix的功能,当网络不通时返回默认的配置数据。
ProductServiceFallback.java

  1. /**
  2. * 服务熔断降级处理可以捕获异常
  3. /
  4. @Component
  5. public class ProductServiceFallbackFactory implements FallbackFactory<ProductService>{
  6. //捕获日志,在需要捕获异常的方法进行处理
  7. Logger logger = LoggerFactory.getlogger(ProductServiceFallbackFactory.class)
  8. @Override
  9. public ProductService create(Throwable throwable){
  10. logger.error("product-service 服务的selectProductById方法出现异常,异常信息如下:"+ throwable);
  11. return new Product(id,"托底",1,2666D);
  12. }
  13. }

声明需要调用的服务

  1. @FeignClient("product-service",fallbackFactory = ProductServiceFallbackFactory.class)
  2. public interface ProductService{
  3. /**
  4. *根据主键查询商品
  5. /
  6. @GetMapping("/product/{id}")
  7. Product selectProductById(@PathVariable("id") Integer id);
  8. }