SpringCloud Feign整合Sentinel

2022年12月6日12:27:28

一.引入依赖

<!--sentinel客户端--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

二.在配置文件中开启Feign对Sentinel的支持

feign:sentinel:enabled:true

三.创建容错类

//容错类要求必须实现被容错的接口,并为每个方法实现容错方案@Component@Slf4jpublicclassProductServiceFallBackimplementsProductService{@OverridepublicProductfindByPid(Integer pid){Product product=newProduct();
		product.setPid(-1);return product;}}

四.为被容器的接口指定容错类

//value用于指定调用nacos下哪个微服务//fallback用于指定容错类@FeignClient(value="service-product", fallback=ProductServiceFallBack.class)publicinterfaceProductService{@RequestMapping("/product/{pid}")//指定请求的URI部分ProductfindByPid(@PathVariableInteger pid);}

五.修改controller



·····························@AutowiredprivateProductService productService;//调用商品微服务,查询商品信息Product product= productService.findByPid(pid);


····························

六.获取具体错误信息

@FeignClient(
value="service-product",//fallback = ProductServiceFallBack.class,
fallbackFactory=ProductServiceFallBackFactory.class)publicinterfaceProductService{//@FeignClient的value + @RequestMapping的value值 其实就是完成的请求地址//"http://service-product/product/" + pid@RequestMapping("/product/{pid}")//指定请求的URI部分ProductfindByPid(@PathVariableInteger pid);}@ComponentpublicclassProductServiceFallBackFactoryimplementsFallbackFactory<ProductService>{@OverridepublicProductServicecreate(Throwable throwable){returnnewProductService(){@OverridepublicProductfindByPid(Integer pid){
				throwable.printStackTrace();Product product=newProduct();
				product.setPid(-1);return product;}};}}

fallback和fallbackFactory只能使用其中一种方式

  • 作者:Young Yu°
  • 原文链接:https://blog.csdn.net/qq_37737274/article/details/122536239
    更新时间:2022年12月6日12:27:28 ,共 1621 字。