Spring Cloud Alibaba入门实践(十九)-Feign整合Sentinel

2022年12月5日12:55:31

之前项目已经引入了Feign和Sentinel的依赖,所以接下里先开启Feign对Sentinel的支持 ,如下:
Spring Cloud Alibaba入门实践(十九)-Feign整合Sentinel
接着我们要为下单接口做容错降级,保证订单服务高可用,下单接口会涉及到商品服务,所以需要对查询商品信息的远程接口做容错,先创建一个容错降级类ProductServiceFallback,它需要实现ProductService类,并重写方法,重写的方法可以理解成是原方法对应的降级方法,一旦下游服务出现问题,这些方法就是兜底方法,如下:

package com.example.mallorder.fallback;import com.example.mallcommon.domain.Product;import com.example.mallorder.fegin.ProductService;import org.springframework.stereotype.Component;@ComponentpublicclassProductServiceFallbackimplementsProductService{@Overridepublic ProductfindById(Integer pid){
        Product product=newProduct();
        product.setPid(-1);return product;}}

然后在@FeignClient注解上加上fallback属性,该属性指定的类就是对应的容错降级类了,如下:Spring Cloud Alibaba入门实践(十九)-Feign整合Sentinel
在修改下单接口,方便看到测试结果,如下:Spring Cloud Alibaba入门实践(十九)-Feign整合Sentinel
这样一旦远程调用商品微服务,查询商品信息失败,就会返回下单失败的提示。

接下来只启动mall-order服务,那么商品微服务没启动,远程调用是肯定是失败的,浏览器访问http://localhost:10020/order/prod/1,结果如下:
Spring Cloud Alibaba入门实践(十九)-Feign整合Sentinel
Feign整合Sentinel 实现降级的步骤和思路大致就是这样,至于如何更好的返回提示结果,根据项目自定义。

不过还存在一个问题,如果想在容错类中拿到具体的错误 ,方便之后的问题排查,应该怎么做?

  • 作者:绅士jiejie
  • 原文链接:https://genjiejie.blog.csdn.net/article/details/109459067
    更新时间:2022年12月5日12:55:31 ,共 866 字。