SpringCloud-OpenFeign拓展-连接池、最佳使用方法、日志输出
目录
1 OpenFeign连接池
1.1 常见连接类型
1.2 连接池使用方法
1.2.1 引入依赖
1.2.2 开启连接池功能
1.2.3 配置完成,重启实例即可,底层将更改设置。
2 OpenFeign最佳使用方法
2.1 每个微服务都是单独的project,内部有三个独立模块
2.2 每个微服务都是一个module,一个project,内设单独api module
2.3 可根据项目的调整所使用的项目架构,选择最好的使用方法。
3 OpenFeign日志输出
3.1 关于OpenFeign中日志的默认设置
3.2 更改OpenFeign日志设置,使其输出日志
3.2.1 检查Feign所在module日志是否为debug级别
3.2.2 自定义日志级别需要声明一个类型为Logger.Level的Bean,在其中定义日志级别
4 总结
4.1 如何利用OpenFeign实现远程调用?
4.2 如何配置OpenFeign的连接池?
4.3 OpenFeign使用的最佳实践方式是什么?
4.4 如何配置OpenFeign输出日志的级别?
在OpenFeign发起远程调用时,默认是请求一次建立一次连接,然后断开,消耗资源,因此推荐使用连接池。
1 OpenFeign连接池
1.1 常见连接类型
OpenFeign对Http请求做了优雅的伪装,不过其底层发起http请求,依赖于其它的框架。这些框架可以自己选择,包括以下三种:
- HttpURLConnection: 默认实现,不支持连接池
- Apache HttpClient:支持连接池
- OKHttp: 支持连接池
具体源码可以参考FeignBlockingLoadBalancerClient类中的delegate成员变量。
1.2 连接池使用方法
此处示例使用OKHttp
1.2.1 引入依赖
<!--OKHttp-->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId>
</dependency>
1.2.2 开启连接池功能
在yaml配置文件中添加
feign:okhttp:enable:true
1.2.3 配置完成,重启实例即可,底层将更改设置。
2 OpenFeign最佳使用方法
OpenFeign在实践中,尤其是FeignClient维护的过程中有两种常见的项目结构
2.1 每个微服务都是单独的project,内部有三个独立模块
每个微服务再下再建立三个模块。其中dto中存放实体类,api模块中存放接口类,biz中则是业务代码。(耦合度低,项目结构较为复杂,适合每个微服务都是一个单独的project情况,大型项目)

2.2 每个微服务都是一个module,一个project,内设单独api module
第二种,是抽取的形式,将FeignClient,配置,实体等公共部分抽取为一个单独的api模块。(结构简单,耦合度高一些,适合多个微服务从属于同一个project,中小型项目)

2.3 可根据项目的调整所使用的项目架构,选择最好的使用方法。
3 OpenFeign日志输出
3.1 关于OpenFeign中日志的默认设置
OpenFeign,只会在FeignClient所在包的日志级别为DEBUG时,才会输出日志。而且其日志级别有4级:
- NONE: 不记录任何日志信息,这是默认值。
- BASIC: 仅记录请求的方法,URL以及响应状态码和执行时间
- HEADERS: 在BASIC的基础上,额外记录了请求和响应的头信息
- FULL: 记录所有请求和响应的明细,包括头信息、请求体、元数据。
由于OpenFeign,默认的日志级别就是NONE,所以默认我们看不到请求日志。
3.2 更改OpenFeign日志设置,使其输出日志
3.2.1 检查Feign所在module日志是否为debug级别
首先关于项目中包(module)的基本设置,在yaml文件中检查配置(注意改为自己的包名):
logging:level:com.example:debug
3.2.2 自定义日志级别需要声明一个类型为Logger.Level的Bean,在其中定义日志级别
一般定义在api微服务模块汇总的config文件中:

定义如下类(此类后续还可以添加其他Feign配置):
public class DefaultFeignConfig {@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}}
但此时这个Bean并未生效,要想配置某个FeignClient的日志,可以在@FeignClient注解中声明(不建议,建议全局使用,看下一条):
@Feignclient(value "item-service",configuration DefaultFeignConfig.class)
如果想要全局配置,让所有FeignClienta都按照这个日志配置,则需要在启动类中的@EnableFeignClients注解中声明(此时@Feignclient则不需要了,有全局即可):
@EnableFeignclients(defaultConfiguration DefaultFeignConfig.class)
4 总结
4.1 如何利用OpenFeign实现远程调用?
- 引入OpenFeign和SpringCloudLoadBalancer依赖
- 利用@EnableFeignClients:注解开启OpenFeign功能
- 编写FeignClient
4.2 如何配置OpenFeign的连接池?
- 引入http客户端依赖,例如OKHttp、HttpClient
- 配置yaml文件,打开OpenFeign连接池开关
4.3 OpenFeign使用的最佳实践方式是什么?
由服务提供者编写独立module,将FeignClient及DTO抽取
4.4 如何配置OpenFeign输出日志的级别?
- 声明类型为Logger.Level的Bean
- 在@FeignClient或@EnableFeignClients注解上使用(@EnableFeignclients(defaultConfiguration DefaultFeignConfig.class))
相关文章:
SpringCloud-OpenFeign拓展-连接池、最佳使用方法、日志输出
目录 1 OpenFeign连接池 1.1 常见连接类型 1.2 连接池使用方法 1.2.1 引入依赖 1.2.2 开启连接池功能 1.2.3 配置完成,重启实例即可,底层将更改设置。 2 OpenFeign最佳使用方法 2.1 每个微服务都是单独的project,内部有三个独立模块 …...
跨链协议中Cosmos IBC、Polkadot/XCM、Celer Network的区别以及用途
跨链协议是实现不同区块链之间通信和价值转移的关键技术。Cosmos IBC、Polkadot/XCM 和 Celer Network 是三个在跨链领域内具有代表性的协议,它们各自有着独特的设计理念和应用场景。下面是这三个协议的详细对比: Cosmos IBC (Inter-Blockchain Communi…...
电子画册制作与传统画册相比,有哪些优势?
在当今数字化时代,电子画册作为一种新兴的媒体形式,其制作与传统画册相比具有显著的优势。以下是对这些优势的详细探讨。 首先,电子画册的制作过程通常更加便捷和经济。相较于传统画册需要经历的繁琐的印刷过程,电子画册的制作大多…...
postman如何导入证书
1、打开postman,点击Settings。 2、添加证书。 3、填写要访问平台的URL路径及端口、证书文件、证书密码。 4、添加完之后即可立即调用postman。...
RocketMQ教程(八):RocketMQ的集群搭建
传送门:RocketMQ教程汇总,让你从入门到精通 集群架构 RocketMQ 的各个组件都可以搭建成集群部署,Broker 还可以搭建成主从架构,下面介绍的主要是 Broker 集群。 数据复制策略 复制策略是Broker的Master与Slave间的数据同步方式。分为同步复制与异步复制: 同步复制 消…...
线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束
5 月 29 日,阿里云联合龙蜥社区共同举办的「飞天技术沙龙-CentOS 迁移替换专场」于北京圆满结束,在线观看人次 2 万。本次活动现场汇聚了来自浪潮信息、Intel、龙芯、统信软件、红旗软件、电子五所等多家操作系统产业头部企业和机构,大家围绕…...
Docker基本架构概览-1
Docker基本架构概览 Docker架构 Docker采用客户端-服务器(C/S)架构,主要组件包括: Docker Client 用户与Docker交互的接口,发送命令到Docker守护进程。 Docker Daemon 运行在后台,接收并处理Docker客户端…...
OZON云仓靠谱吗,OZON云仓垫资提货模式
在电商飞速发展的今天,物流仓储成为了支撑整个电商生态的重要基石。OZON云仓作为市场上新兴的仓储物流服务提供商,凭借其先进的技术和灵活的服务模式,受到了不少电商卖家和消费者的关注。但随之而来的是一系列疑问:OZON云仓靠谱吗…...
数据集笔记:DGraph 大规模动态图数据集
dgraph-web (xinye.com) 1 数据集介绍 DGraph 是一个有向无权的动态图,包含超过 370 万个节点以及 430 万条动态边DGraph 中的节点表示金融借贷用户,有向边表示紧急联系人关系,每个节点包含脱敏后的属性特征,以及表示是否为金融…...
一些常用的git指令总结
1、git add 文件名 :该 命令可将该文件的修改添加到暂存区 比如:我刚刚修改了my_test.cpp文件,这时就可以使用git add my_test.cpp. 就将该修改添加到了暂存区。 2、git commit -m "......说明" 就是将当前的修改记录提交到本地…...
【HarmonyOS】遇见的问题汇总
一、当前编辑的页面,预览打不开 1、问题说明 当前编辑的页面,预览打不开,日志提示如下: Route information is not configured for the current page. To avoid possible redirection issues, configure route information for…...
C# NX二次开发-获取圆弧中心点和半径
使用UF函数可以获取圆弧边或圆弧线中心点和半径: 1.使用 UF_CURVE_ask_arc_data: theUf.Curve.AskArcData(edge.Tag, out UFCurve.Arc arc);theUf.Curve.CreateArc(ref arc, out Tag arc_tag);double[] matrix_values new double[9];double[] vec_product new double[3];theU…...
鸿蒙原生应用元服务开发-位置服务地理编码转化开发
(逆)地理编码转化开发 场景概述 使用坐标描述一个位置,非常准确,但是并不直观,面向用户表达并不友好。系统向开发者提供了以下两种转化能力。 地理编码转化:将地理描述转化为具体坐标。 逆地理编码转化能力…...
【ArcGISPro SDK】构建多面体要素
结果展示 每个面构建顺序 代码 using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Catalog; using ArcGIS.Desktop.Core; using ArcGIS.Desktop.Editing; using ArcGIS.Desktop.Extensions; using ArcGIS.Desktop.Framework;…...
leetcode够用之java语法
常用方法 Arrays.sort()排序 import java.util.Arrays;public class Main {public static void main(String[] args) {int[] numbers {9, 2, 5, 1, 7, 3};Arrays.sort(numbers);System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 5, 7, 9]} }获取str中的第…...
pdf文件怎么改变大小?在线快速压缩pdf的方法
pdf作为一种常用的文件格式,使用这种文件类型的好处在于不仅拥有更好的兼容性,还可以设置密码来保证安全性,防止未授权用户查看内容,所以现在导出文件展示都会采用这种格式的来做内容展示。当遇到pdf文件过大问题时,想…...
inferCNV:scRNA-seq数据推断染色体拷贝数变化
inferCNV分析简介 inferCNV用于探索肿瘤单细胞RNA-Seq 数据,以确定体细胞大规模染色体拷贝数改变的证据,例如整个染色体或大片段染色体的增益或缺失。这是通过与一组参考“正常”细胞(这里的正常细胞可自行定义)进行比较…...
银河麒麟操作系统通过首批软件供应链安全能力认证
麒麟软件产品供应链安全能力获双重肯定!5月30日,经北京赛迪认证中心评估,银河麒麟高级服务器操作系统V10和银河麒麟桌面操作系统V10成为首批获得软件供应链安全能力认证产品,并在操作系统类产品中名列前茅。 软件供应链安全能力评…...
【MySQL】数据库介绍|数据库分类|MySQL的基本结构|MySQL初步认识|SQL分类
目录 数据库介绍 什么是数据库 数据库分类 1.关系型数据库(RDBMS): 2.非关系型数据库: MySQL要学啥 MySQL初步认识 SQL分类 💡推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风…...
2024年6月11日 (周二) 叶子游戏新闻
万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站,可以做到无水印的视频和封面下载功能哦,具体玩法大家自行发挥吧。 WPS免登录一键修改器: 去除烦人的登录且能正常使用 日本一首部游戏《拼图世界》上架Steam 30年PS名作日本游戏厂商日本一的首部品…...
如何在Windows电脑上轻松安装安卓应用:5步完成轻量级跨平台部署
如何在Windows电脑上轻松安装安卓应用:5步完成轻量级跨平台部署 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上运行安卓应用&…...
3步打造专属桌面歌词体验:LyricsX macOS歌词神器完全指南
3步打造专属桌面歌词体验:LyricsX macOS歌词神器完全指南 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics LyricsX是一款专为macOS用户设计的开源桌面歌词显示…...
5个Zutilo技巧让你成为Zotero文献管理高手
5个Zutilo技巧让你成为Zotero文献管理高手 【免费下载链接】Zutilo Zotero plugin providing some additional editing features 项目地址: https://gitcode.com/gh_mirrors/zu/Zutilo 还在为Zotero的批量操作烦恼吗?每天面对成百上千的文献条目,…...
不止于下载:用Active-HDL给你的Lattice FPGA设计做个“体检”(功能仿真实战)
从功能仿真到可靠设计:Active-HDL在Lattice FPGA开发中的深度实践 当LED灯在你的FPGA开发板上如期闪烁时,那种成就感确实令人振奋。但作为经历过多次调试煎熬的工程师,我必须告诉你:能下载运行只是FPGA开发的起点,而非…...
利用MCP协议与Crypto APIs为AI助手集成多链交易数据查询能力
1. 项目概述:一个为AI助手注入区块链洞察力的MCP服务器 如果你和我一样,日常开发中经常需要查询不同区块链上的交易详情——比如验证一笔以太坊上的USDT转账是否成功,或者追溯某个比特币地址的资金来源——那你肯定体会过在十几个浏览器标签…...
【SITS 2026 K8s for ML合规框架】:通过CNCF AI WG审核的3层资源隔离模型(含YAML模板+准入控制器配置)
更多请点击: https://intelliparadigm.com 第一章:AI原生Kubernetes编排:SITS 2026 K8s for ML工作负载 SITS 2026 引入了专为机器学习工作负载深度优化的 AI-native Kubernetes 编排层,突破传统 K8s 在资源弹性、拓扑感知与训练…...
动手实现一个简易的RS纠删码:用Python从GF(2^8)有限域到编解码全流程
动手实现一个简易的RS纠删码:用Python从GF(2^8)有限域到编解码全流程 在分布式存储和通信系统中,数据可靠性始终是核心挑战之一。想象一下,当你将文件上传到云端或通过网络传输重要数据时,如何确保即便部分数据丢失或损坏…...
从“狗的信”看FPGA设计:工程师的幽默隐喻与EDA实践
1. 从一封“狗的信”到工程师的幽默与哲思那天在EE Times上翻到一篇2011年的老文章,标题是《‘Dear God…’ (From the Dog)》,作者是Clive Maxfield。说实话,在一堆充斥着“3nm工艺”、“HBM4 PHY”、“AI Agent”这些硬核技术词汇的行业新闻…...
FPGA以太网MAC调试架构设计与DSP优化实践
1. 项目概述:FPGA与以太网MAC的DSP调试架构在数字信号处理(DSP)的硬件实现中,调试环节往往成为开发效率的瓶颈。传统JTAG调试方式受限于带宽和灵活性,难以满足大规模数据交互的需求。我们基于Xilinx Virtex-4 FPGA平台…...
Awesome List Creator:基于规则引擎的自动化资源清单生成工具
1. 项目概述:一个清单的“引擎”在信息过载的时代,无论是开发者寻找工具库,还是学习者梳理知识体系,一份结构清晰、内容精选的“Awesome List”(优质资源清单)都堪称无价之宝。然而,维护一份高质…...
