SpringCloud Feign整合Sentinel
一.引入依赖
<!--sentinel客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
二.在配置文件中开启Feign对Sentinel的支持
feign: sentinel: enabled: true
三.创建容错类
//容错类要求必须实现被容错的接口,并为每个方法实现容错方案 @Component @Slf4j public class ProductServiceFallBack implements ProductService { @Override public Product findByPid(Integer pid) { Product product = new Product(); product.setPid(-1); return product; } }
四.为被容器的接口指定容错类
//value用于指定调用nacos下哪个微服务 //fallback用于指定容错类 @FeignClient(value = "service-product", fallback = ProductServiceFallBack.class) public interface ProductService { @RequestMapping("/product/{pid}")//指定请求的URI部分 Product findByPid(@PathVariable Integer pid); }
五.修改controller
····························· @Autowired private ProductService productService; //调用商品微服务,查询商品信息 Product product = productService.findByPid(pid); ····························
六.获取具体错误信息
@FeignClient( value = "service-product", //fallback = ProductServiceFallBack.class, fallbackFactory = ProductServiceFallBackFactory.class) public interface ProductService { //@FeignClient的value + @RequestMapping的value值 其实就是完成的请求地址 //"http://service-product/product/" + pid @RequestMapping("/product/{pid}")//指定请求的URI部分 Product findByPid(@PathVariable Integer pid); } @Component public class ProductServiceFallBackFactory implements FallbackFactory<ProductService> { @Override public ProductService create(Throwable throwable) { return new ProductService() { @Override public Product findByPid(Integer pid) { throwable.printStackTrace(); Product product = new Product(); product.setPid(-1); return product; } }; } }
fallback和fallbackFactory只能使用其中一种方式
上一篇:
IDEA上Java项目控制台中文乱码