【Spring Cloud】Feign整合服务容错中间件Sentinel

上一篇文章中我们已经对服务容错中间件 Sentinel 持久化的两种模式进行了全面解析,本文我们将对Feign和Sentinel进行有机整合。

引入sentinel依赖

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

配置文件

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

feign:
  sentinel:
    enabled: true

为被容错的接口指定容错类

/**
 * value用于指定调用nacos下哪个微服务
 * fallback用于指定容错类
 */
@FeignClient(value="shop-product",fallback = ProductServiceFallback.class)
public interface ProductService {
    //指定调用提供者的哪个方法
    @GetMapping(value = "/product/{pid}")
    ShopProduct findByPid(@PathVariable("pid") Long pid);
}

创建容错类

容错类要求必须实现被容错的接口,并为每个方法实现容错方案

@Component
public class ProductServiceFallback implements ProductService {
    @Override
    public ShopProduct findByPid(Long pid) {
        ShopProduct product = new ShopProduct();
        product.setId(-1L);
        return product;
    }
}

修改controller

在这里插入图片描述

演示

停止shop-product服务,启动shop-order服务,访问下单请求,观察容错效果

在这里插入图片描述

扩展

如果想在容错类中拿到具体的错误,可以使用下面的方式

为被容错的接口更改容错类

更改被容错接口的容错返回类为回退工厂类

@FeignClient(value="shop-product", fallbackFactory = ProductServiceFallBackFactory.class)
public interface ProductService {

    //指定调用提供者的哪个方法
    @GetMapping(value = "/product/{pid}")
    ShopProduct findByPid(@PathVariable("pid") Long pid);
}

创建回退工厂类

@Component
public class ProductServiceFallBackFactory implements FallbackFactory<ProductService> {
    @Override
    public ProductService create(Throwable throwable) {
        return new ProductService(){
            @Override
            public ShopProduct findByPid(Long pid) {
                throwable.printStackTrace();
                ShopProduct product=new ShopProduct();
                product.setId(-1L);
                return product;
            }
        };
    }
}

演示

在这里插入图片描述

注意:Fallback和FallbackFactory只能使用其中一种方式。

总结

到这儿,Feign整合服务容错中间件Sentinel就已经介绍完了。下一篇将为大家带来Gateway——服务网关的相关文章,敬请期待吧!

后续的文章,我们将继续完善我们的微服务系统,集成更多的Alibaba组件。想要了解更多JAVA后端知识,请点击文末名片与我交流吧。留下您的一键三连,让我们在这个寒冷的东西互相温暖吧!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿Q说代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值