微服务远程调用openFeign简单回顾(内附源码示例)

目录

[一. OpenFeign简介](#一. OpenFeign简介)

[二. OpenFeign原理](#二. OpenFeign原理)

演示使用

provider模块

消费者模块

配置全局feign日志

示例源代码:


一. OpenFeign简介

OpenFeign是SpringCloud服务调用中间件,可以帮助代理服务API接口。并且可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

二. OpenFeign原理

添加@EnableFeignClients注解开启对@FeignClient注解的扫描加载处理。根据Feign Client的开发规范,定义接口并添加@FeiginClient注解

当程序启动之后,会进行包扫描,扫描所有@FeignClient注解的接口,并将这些信息注入到IOC容器中。当定义的Feign接口被调用时,通过JDK的代理的方式生成具体的RequestTemplate。Feign会为每个接口方法创建一个RequestTemplate对象。该对象封装了HTTP请求需要的所有信息,例如请求参数名、请求方法等信息。

然后由RequestTemplate生成Request,把Request交给Client去处理,这里的Client可以是JDK原生的URLConnection、HttpClient或Okhttp。最后Client被封装到LoadBalanceClient类,看这个类的名字既可以知道是结合Ribbon负载均衡发起服务之间的调用,因为在OpenFeign中默认是已经整合了Ribbon了。

演示使用

创建一个简单springcloud项目,有两个模块consumer(消费者)和provider(生产者)模块

两个模块都需要注册进nacos注册中心,也可以使用其他的注册中心比如Apollo或者Eureka等,这里演示使用nacos

注册配置naocs具体步骤不再演示,可以查看博主之前文章进行注册配置

引入openFeign依赖

复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency> 

provider模块

配置:

书写生产者测试接口:

消费者模块

配置:

启动两个模块查看是否注册进nacos中

消费者主启动类中添加远程调用注解

书写feign调用接口

控制层调用feign接口

测试:

配置全局feign日志

feign的调用日志需要单独进行配置,这样服务之间进行调用时才可以看到服务之间调用的日志信息

书写feign日志配置类

由于springboot默认日志级别是info, feign的debug日志级别就不会输出,所以还需要在配置中调整feign的debug级别打印

重启测试:

查看控制台可以看到服务调用接口的信息:

示例源代码:

源代码

密码:h6kp

相关推荐
珠海西格电力22 分钟前
零碳园区如何优化能源结构?
运维·人工智能·物联网·架构·能源
北京盟通科技官方账号22 分钟前
EC-Master 适配 Xenomai 4:构建 Linux 环境下的硬实时 EtherCAT 主站架构
linux·运维·网络·人工智能·架构·机器人
乾元30 分钟前
高可用传输网络的 AI 级联恢复策略——跨域自动化在服务提供商网络中的工程化实现
运维·网络·人工智能·架构·自动化
Eadia1 小时前
React基础框架搭建7-测试:react+router+redux+axios+Tailwind+webpack
react.js·架构·前端框架
明洞日记2 小时前
【ITK手册001】ITK 架构核心:itk::Object 基类解析与应用指南
c++·图像处理·架构·图形渲染·itk
Hilaku2 小时前
年薪 50W 的前端,到底比年薪 15W 的强在哪里?
前端·javascript·架构
虫小宝2 小时前
导购返利APP服务网格实践:基于Istio的微服务流量管理与监控
微服务·云原生·istio
最贪吃的虎2 小时前
【分布式】分布式事务框架 Seata 详解:架构与四种实现模式
java·开发语言·数据库·分布式·后端·架构
超级小猪2 小时前
003-spring cloud alibaba之gateway网关
微服务
2501_941809143 小时前
分布式消息流与实时计算系统设计的工程实践与多语言协同实现解析全栈架构思考记录分享文稿
分布式·架构