首页 > 其他分享 >十二、Sentinel支持OpenFeign

十二、Sentinel支持OpenFeign

时间:2023-07-05 21:34:46浏览次数:32  
标签:OpenFeign Producer class 十二 hello port Sentinel public cloud

Sentinel要支持OpenFeign,只需要以下两个步骤:

1、配置feign.sentinel.enabled=true

2、添加依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

 

在Producer模块中定义资源:

@RestController
public class HelloProducer {
    @Value("${server.port}")
    private int port;

    @RequestMapping("/hello")
    public String  hello() {
        return "hello,Producer,port:" + port;
    }
}

 

首先在根项目的dependencyManagement中添加依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>3.1.6</version>
    </dependency>

 

其次在Consumer中添加依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

在Consumer的application.properties配置:

feign.sentinel.enabled=true

在启动类加@EnableFeignClients。

 

增加feign接口:

@FeignClient(name = "producer", fallback = HelloFeignFallback.class, configuration = FeignConfiguration.class)
public interface HelloFeign {
    @RequestMapping("/hello")
     String  hello();
}

fallback属性是服务降级的处理。producer是Producer的服务名。

public class HelloFeignFallback implements HelloFeign {
    @Override
    public String hello() {
        return "hello fallback";
    }
}

public class FeignConfiguration {

    @Bean
    public HelloFeign helloFeign() {
        return new HelloFeignFallback();
    }
}

FeignConfiguration没加@Configuration注解。

在Controller加:

@Autowired
private HelloFeign helloFeign;

@RequestMapping("/call")
public String call() {
    return helloFeign.hello();
}

启动Consumer和Producer后,访问http://localhost:7001/consumer/call,看到hello,Producer,port:7000。关闭Producer服务,在调用,看到hello fallback。继续启动一个端口是7002的Producer服务,继续访问,发现hello,Producer,port:7000和hello,Producer,port:7002交替输出,实现了负载均衡。

标签:OpenFeign,Producer,class,十二,hello,port,Sentinel,public,cloud
From: https://www.cnblogs.com/shigongp/p/17529659.html

相关文章

  • 十一、Sentinel之系统规则
    Sentinel系统自适应保护从整体维度对应用入口流量进行控制,结合应用的Load、总体平均RT、入口QPS和线程数等几个维度的监控指标,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。一、背景在开始之前,先回顾一下Sentinel做......
  • PlayWright(十二)- PO模式
    1、PO模式是什么?PO,即PageObject,直译为页面对象,代表Web应用程序的一部分 具体什么意思呢,通俗来讲,一个页面有输入、点击、搜索功能,而且有很多页面,这时候我们就采用每个页面作为一个单独的page对象来维护编写,避免重复代码,层级也清晰,便于维护 2、以百度首页搜索为实例我们......
  • 【十二】JavaScript之BOM
    【十二】JavaScript之BOM【1】什么是BOMBOM(BrowerObjectModel,浏览器对象模型),主要是浏览器中js解释器提供给开发者调用浏览器功能的对象或接口方法因为旧版本浏览器厂商实现不一样,所以有可能存在同一段代码在不同旧浏览器下的结果不一致的兼容问题。当然现代浏览器几乎......
  • 焰火十二卷调色板软件 v2.8.27 更新进度说明
    ​ 调色板是数字创意时代的重要工具,它能够影响设计作品的视觉效果和美感。焰火十二卷是一款免费开源的色彩编辑器,它可以让你从色轮或者其他来源生成一组协调的色彩,并且可以自由调整色彩的属性(比如亮度、饱和度、对比度等)。也可以把生成的色彩保存为色彩组或者色库,并且可以方便地......
  • 前端Vue自定义精美宫格菜单按钮组件 可设置一行展示个数 可设置成九宫格 十二宫格 十
    前端Vue自定义精美宫格菜单按钮组件可设置一行展示个数可设置成九宫格十二宫格十五宫格,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13315效果图如下:cc-categoryMenu使用方法<viewclass="header">十五宫格菜单</view><!--推荐宫......
  • 韦东山freeRTOS系列教程之【第十二章】资源管理(Resource Management)
    文章目录系列教程总目录概述12.1屏蔽中断12.1.1在任务中屏蔽中断12.1.2在ISR中屏蔽中断12.2暂停调度器系列教程总目录本教程连载中,篇章会比较多,为方便同学们阅读,点击这里可以查看文章的目录列表概述在前面讲解互斥量时,引入过临界资源的概念。在前面课程里,已经实现了临界资源......
  • 八、Sentinel之流量控制
    FlowSlot会根据预设的规则,结合前面NodeSelectorSlot、ClusterNodeBuilderSlot、StatistcSlot统计出来的实时信息进行流量控制。限流的直接表现是在执行EntrynodeA=SphU.entry(资源名字)的时候抛出FlowException异常。FlowException是BlockException的子类,您可以捕捉......
  • Sentinel源码分析
    Sentinel的基本概念Sentinel实现限流、隔离、降级、熔断等功能,本质要做的就是两件事情:统计数据:统计某个资源的访问数据(QPS、RT等信息)规则判断:判断限流规则、隔离规则、降级规则、熔断规则是否满足这里的资源就是希望被Sentinel保护的业务,例如项目中定义的controller方法就是......
  • Sentinel的线程隔离与Hystix的线程隔离有什么差别?
    Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。......
  • 【十二】MySQL数据库之事物
    【十二】MySQL数据库之事物事务【一】什么是事务?事务是MySQL的一种机制每开启一个事务都可以往里放入一系列的SQL语句。事务是单个逻辑工作单位执行的一系列操作要么全执行要么全不执行每开一个事务相当于给数据库拍了一张快照这意味着在提交之前可以回滚在......