OpenFeign终极指南:超时控制、重试策略、拦截器与自定义Starter

目录

前言

使用

引入依赖

开启feign

编写feign客户端

效果

日志

超时配置

重试机制

拦截器

Fallback兜底返回

引入依赖

编写兜底实现

连接池

引入依赖

开启连接池

制作OpenFeign Starter

编写配置类

自动装配


前言

在RPC框架中,有openFeignDubbo,openFeign是SpringCloud的,而Dubbo是

SpringCloudalibaba的,我们讲解openFeign,博主所在公司用的RPC框架也是openFeign,

几个系统之间相互进行PRC调用,通过制作openFeign starter推送到远程仓库,然后通过maven引

用使用feign客户端进行调用。

SpiringCloud openFeign官网:openFeign

使用

引入依赖

引入spring-cloud-starter-openfeignspring-cloud-starter-loadbalancer依赖,引入spring-cloud-

starter-loadbalancer主要是做负载均衡,他是一个负载均衡器,在旧版本用的是Ribbon,新版本用

的是这个loadbalancer,当有多个服务实例的时候,根据负载均衡算法自动选取一个,默认是轮

询。

开启feign

@EnableFeignClients:启用Feign客户端功能,扫描并注册@FeignClient接口,生成代理类。

编写feign客户端

@FeignClient:nacos对应的服务名称(会根据服务名称找到ip+端口 进行RPC调用)

效果

订单服务通过openFeign调用商品服务

日志

如果我们想看调用过程中的详细日志,我们可以配置openFeign日志,查看到详细信息。

配置文件中配置feign包下的日志级别为debug,定义一个Bean返回Logger.Level.FULL,表示设置Feign客户端日志级别为FULL,记录所有请求和响应的详细信息。(生产中一般不开启feign日志)

超时配置

如果请求都超时,在高并发的情况下,请求都阻塞在哪里就会对服务造成雪崩。我们可以对服务超

时进行一些配置,超时配置有连接超时和读取超时,连接超时默认10秒,读取超时默认60秒。

配置连接超时和读取超时,如没有配置默认使用default默认的配置。

重试机制

openFeign默认是不重试的,可以在配置文件中配置重试机制,如果openFeign在IOC容器里面找

到,会使用IOC里面的配置的。

拦截器

openFeign提供了拦截器,可以对请求和响应进行拦截处理,一般我们进行请求拦截器处理,实现

RequestInterceptor接口,在apply方法里面添加请求,可以在配置文件中配置,如果配置文件不配

置,放到IOC容器,他会在IOC容器里面拿到。

Fallback兜底返回

引入依赖

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

编写兜底实现

连接池

openFeign默认是不支持连接池的,这样就会导致在高并发场景下,性能不是很好,频繁创建连接

和销毁连接,我们可以配置连接池来提供性能、优化资源利用。

openFeign底层发起http请求,依赖其他框架。其底层支持的http客户端实现包括:

  • HttpURLConnection:默认实现,不支持连接池
  • Apache HttpClient:支持连接池
  • OKHttp:支持连接池

openFeign整合OKHttp的步骤如下:

引入依赖

开启连接池

制作OpenFeign Starter

制作openFegin Starter推送到maven私服仓库,其他项目就可以引用调用feign客户端。

编写配置类

启用对Feign客户端支持。

自动装配

编写自动装配配置,springboot2.X和springboot3.X都进行配置,确保能够自动装配进去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows桌面图标变白的解决方案

一、问题原因 桌面图标变白通常是由于系统图标缓存文件&#xff08;IconCache.db&#xff09;损坏或系统图表示现异常导致。图标缓存是Windows用于存储应用程序和文件夹图标图像的临时文件&#xff0c;当该文件损坏或系统未正确更新缓存时&#xff0c;图标会因无法加载原始图像…

【mysql】Mac 通过 brew 安装 mysql 、启动以及密码设置

Mac 通过 brew 安装 mysql 、启动以及密码设置 使用 brew 安装 mysqlmysql 启动mysql密码设置参考文章&#xff1a; 使用 brew 安装 mysql brew install mysqlmysql 启动 下载完毕&#xff0c;终端告诉我们mysql数据库没有设置密码的&#xff0c;我们可以直接执行 mysql -u r…

Manus AI:突破多语言手写识别技术壁垒之路

Manus AI与多语言手写识别 讨论Manus AI如何突破多语言手写识别的技术壁垒。 写一篇详细的博客有重点有链接超详细 Manus AI&#xff1a;突破多语言手写识别技术壁垒之路 在人工智能领域&#xff0c;多语言手写识别一直是极具挑战性的难题。不同语言的字符形态、书写规则大相…

Redis字符串类型实战:解锁五大高频应用场景

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Redis的字符串&#xff08;String&#xff09;类型是最基础的数据结构&#xff0c;但其灵活性和原子性操作使其成为解决高并发场景问题的利器。本文通过真实项…

边沿耦合与宽边耦合的串扰

边沿耦合与宽边耦合的串扰 我们知道&#xff0c;如果两条走线位于同一层&#xff0c;由于耦合两条线之间会存在串扰。如果PCB层叠中有相邻的信号层&#xff0c;那么同样存在耦合&#xff0c;这两个相邻信号层的走线之间也会存在串扰。同层走线之间的耦合称为边沿耦合&#xff0…

B端可视化像企业数据的透视镜,看清关键信息

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;数据的价值不仅取决于其数量&#xff0c;更在于企业能否快速、准确地提取关键信息并据此做出决策。B端可视化技术的出现&#xff0c;为企业提供了一种强大的工具&#xff0c;它如同企业的“透视镜”&…

苍穹外卖项目中所涉及到的测试内容

1.使用JWT令牌封装用户令牌&#xff0c;并且设置相应的拦截器校验JWT的有效性&#xff0c;从而确保了项目的安全可靠 1.基本功能测试&#xff1a; 验证合法JWT是否能够正常通过拦截器的校验 验证非法的JWT能否正常通过拦截器的校验 2.可靠性测试&#xff1a; 3.易用性测试 …

模拟投资大师思维:AI对冲基金开源项目详解

这里写目录标题 引言项目概述核心功能详解多样化的AI投资智能体灵活的运行模式透明的决策过程 安装和使用教程环境要求安装步骤基本使用方法运行对冲基金模式运行回测模式 应用场景和实际价值教育和研究价值潜在的商业应用与现有解决方案的对比局限性与发展方向 结论 引言 随着…

YOLO拓展-锚框(anchor box)详解

一.锚框&#xff08;anchor box&#xff09;概述 1.1什么是锚框 锚框就是一种进行预测的像素框&#xff0c;通过遍历输入图像上所有可能的像素框&#xff0c;然后选出正确的目标框&#xff0c;并对位置和大小进行调整就可以完成目标检测任务。 对于yolo锚框的建设须基于实际…

Excel自定义函数取拼音首字母

1.启动Excel 2003&#xff08;其它版本请仿照操作&#xff09;&#xff0c;打开相应的工作表&#xff1b; 2.执行“工具 > 宏 > Visual Basic编辑器”命令&#xff08;或者直接按“AltF11”组合键&#xff09;&#xff0c;进入Visual Basic编辑状态&#xff1b; 3.执行“…

Cril 截取字段-生成hostname

有些event 是不规则,需要用regular express 来加工一下, 下面说一下sample 数据: 2021-10-26 17:00:12 PDT sample log data from host eagle1 2021-10-26 17:00:12 PDT sample log data from host eagle2 2021-10-26 17:00:12 PDT sample log data from host eagle3 2021…

关于大型语言模型的“生物学”

我知道我们已经聊过很多次&#xff0c;关于LLM是怎么运作的&#xff0c;它们的影响力&#xff0c;还有它们的使用场景。但尽管现在有那么多讲LLM的文章&#xff0c;它们本质上还是个黑箱。 但我们真正要问自己的问题是&#xff0c;为什么理解这些系统的内部结构很重要&#xf…

压滤机与锡泥产生效率

的关系可从设备作用机制、工艺参数影响及效率评估方法三个维度展开&#xff0c;结合工业实践与实验室研究&#xff0c;其关联逻辑如下&#xff1a; 一、压滤机在锡泥处理中的核心作用 固液分离原理 压滤机通过正压强压脱水、挤压脱水、风吹脱水三步实现固液分离&#xff1a; …

简单线段树的讲解(一点点的心得体会)

目录 一、初识线段树 图例&#xff1a; ​编辑 数组存储&#xff1a; 指针存储&#xff1a; 理由&#xff1a; build函数建树 二、线段树的区间修改维护 区间修改维护&#xff1a; 区间修改的操作&#xff1a; 递归更新过程&#xff1a; 区间修改update&#xff1a…

Jenkins 2.492.2 LTS 重置管理员密码

文章目录 1. Jenkins 关闭用户认证2. jenkins 修改密码 如果忘记了 Jenkins 的管理员密码的话&#xff0c;也不用担心&#xff0c;只要你有权限访问 Jenkins 的根目录&#xff0c;就可以轻松地重置密码。 1. Jenkins 关闭用户认证 // 查看 jenkins 家目录&#xff08;使用 doc…

《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理

第26篇&#xff1a;Chain-of-Thought&#xff1a;引导大模型进行步骤推理 摘要 在自然语言处理&#xff08;NLP&#xff09;和人工智能领域&#xff0c;如何让大模型像人类一样进行逐步推理是一个核心挑战。Chain-of-Thought (思维链) 技术的出现为这一问题提供了强有力的解决…

SICAR 标准 安全门锁操作箱 按钮和指示灯说明

1、安全门锁操作箱 2、按钮和指示灯说明 一、指示灯说明 红灯&#xff1a; 常亮&#xff1a;表示安全门已解锁&#xff1b;闪烁&#xff1a;表示安全门未复位&#xff1b;熄灭&#xff1a;表示安全门已复位。 黄灯&#xff1a; 常亮&#xff1a;表示处于维修模式。 绿灯&…

MAC-​​需求​​:10万订单异步执行库存扣减、短信通知。

批量任务并行处理​​ 实现,通过拆分任务、异步执行和线程池管理提升处理。 ​​10万订单异步处理方案设计​​ 基于图中代码的批量处理框架,结合订单业务需求,以下是 ​​库存扣减与短信通知的异步实现​​: ​​1. 代码实现(基于原有框架改造)​​ @Service public…

python 库 下载 ,整合在一个小程序 UIUIUI

上图 import os import time import threading import requests import subprocess import importlib import tkinter as tk from tkinter import ttk, messagebox, scrolledtext from concurrent.futures import ThreadPoolExecutor, as_completed from urllib.parse import…

Flutter与FastAPI的OSS系统实现

作者&#xff1a;孙嘉成 目录 一、对象存储 二、FastAPI与对象存储 2.1 缤纷云S4服务API对接与鉴权实现 2.2 RESTful接口设计与异步路由优化 三、Flutter界面与数据交互开发 3.1 应用的创建 3.2页面的搭建 3.3 文件的上传 关键词&#xff1a;对象存储、FastAPI、Flutte…