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只能使用其中一种方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值