0
点赞
收藏
分享

微信扫一扫

机器学习过拟合和欠拟合!看这一篇文章就够了 建议收藏!(上篇)

文章目录

上一篇文章中我们已经对服务容错中间件 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;
            }
        };
    }
}

演示

在这里插入图片描述

总结

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

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

举报

相关推荐

0 条评论