远程调用框架OpenFeign
2023-01-09 15:03:53 0 举报
AI智能生成
远程调用框架OpenFeign的整个学习思路导图,从入门到精通,不怕学不会就怕没思路。
作者其他创作
大纲/内容
OpenFeign是一个显示声明式的WebService客户端
OpenFeign的设计宗旨式简化Java Http客户端的开发
OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如 @RequesMapping/@GetMappering等
了解概念
使用OpenFeign能让编写Web Service客户端更加简单。使用时只需定义服务接口,然后在上面添加注解即可
在OpenFeign的协助下,我们只需创建一个接口并使用注解的方式进行配置(类似于Dao接口上面的Mapper注解)即可完成对服务提供方的接口绑定,调用远程接口像调用本地方法一样
它的作用
1、简化远程调用开发2、实现客户端的负载均衡
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- 添加 Nacos 支持 --><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
引入jar包
spring: application: name: springcloud-openfeign-provider # 项目名称(nacos 注册的服务名) cloud: nacos: discovery: username: nacos # nacos 登录用户名 password: nacos # nacos 密码 server-addr: 127.0.0.1:8848 # nacos 服务端地址server: port: 8082 # 项目启动端口号
添加配置文件
添加服务方法
创建服务提供者
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 添加 nacos 框架依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 添加 openfeign 框架依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
spring: application: name: springcloud-openfeign-consumer # 项目名称(nacos 注册的服务名) cloud: nacos: discovery: username: nacos # nacos 登录用户名 password: nacos # nacos 密码 server-addr: 127.0.0.1:8848 # nacos 服务端地址server: port: 8091 # 项目启动端口号member-provider.requesturl: 127.0.0.1:8081
开启 OpenFeign
/** * 通过 OpenFeigen 实现远程调用的三种方式 */@Component//@FeignClient(\"springcloud-openfeign-provider\") // 1.通过注册中心服务发现实现远程调用//@FeignClient(name = \"member\
创建 OpenFeign 与服务提供者的调用接口
@RestControllerpublic class ConsumerController { @Resource private SpringCloudOpenFeignProviderClient openFeignProviderClient; // 加载 openfeign client @GetMapping(\"/consumer\") public String consumer(@RequestParam String name) { // 向调用本地方法一样,调用 openfeign client 中的方法 return openFeignProviderClient.call(name); }}
使用远程服务接口
创建服务消费者
1.通过注册中心服务发现实现远程调用
2.指定url地址,不经过Ribbon的服务选择,直接请求服务
3.动态url地址,不经过Ribbon的服务选择,直接请求服务通过配置文件,配置url地址
远程调用的三种方式
Feign 提供了日志打印功能,可以通过配置来调整日志级别,从而对 Feign 接口的 调用情况进行监控和输出
描述
NONE∶默认的,不显示任何日志BASIC∶仅记录请求方法、URL、响应状态码及执行时间;HEADERS∶除了 BASIC中定义的信息之外,还有请求和响应的头信息;FULL∶除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。
日志级别
@Configurationpublic class OpenFeignConfig { /** * 指定日志级别 * @return */ @Bean public Logger.Level logLevel(){ return Logger.Level.FULL; }}
代码示例
logging: # openfeign接口远程调用过程打印信息 级别-Debug level: com.jesonking.openfeigncustomer.SpringCloudOpenFeignProviderClient: debug
yml配置
应用实例
日志配置
openfeign默认超时时间为1秒,即调用得到响应的时间超出1秒则会超时抛出异常
默认超时时间
1.设置Ribbon的超时时间(不推荐)
2.设置openFeign的超时时间(推荐)
设置超时时间
超时时间
OpenFeign的使用
基本使用
OpenFeign通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务
原理图
OpenFeign的实现原理
结构图
源码实现结构图
https://github.com/spring-cloud/spring-cloud-openfeign
源代码地址
底层实现源码
远程调用框架OpenFeign
收藏
0 条评论
回复 删除
下一页