微服务 Feign相关

article/2025/6/27 4:35:45

1.feign 调用超时控制逻辑

openfign 中配置默认的链接时间是 10S 读取时间是60S

可以在YML文件中修改配置

spring: cloud:nacos:server-addr: 127.0.0.1:8848config:namespace: 51d656b5-cfe8-4cd0-95ad-91811cd88dc6#openfeign 相关配置openfeign:client:config:
#          默认配置 (若没有配置指定服务则按默认服务走 )default:connect-timeout: 3000read-timeout: 3000
(配置了产品服务 则调用产品服务时 按照这个配置信息走  "product"为服务名 )product:connect-timeout: 6000read-timeout: 6000

其他可配置参数

 public static class FeignClientConfiguration {private Logger.Level loggerLevel;private Integer connectTimeout;private Integer readTimeout;private Class<Retryer> retryer;private Class<ErrorDecoder> errorDecoder;private List<Class<RequestInterceptor>> requestInterceptors;private Class<ResponseInterceptor> responseInterceptor;private Map<String, Collection<String>> defaultRequestHeaders = new HashMap();private Map<String, Collection<String>> defaultQueryParameters = new HashMap();private Boolean dismiss404;private Class<Decoder> decoder;private Class<Encoder> encoder;private Class<Contract> contract;private ExceptionPropagationPolicy exceptionPropagationPolicy;private List<Class<Capability>> capabilities;private Class<QueryMapEncoder> queryMapEncoder;private MicrometerProperties micrometer;private Boolean followRedirects;private String url;

2.feign 重试调用机制

@Configuration
public class OrderConfig {@BeanRetryer retryer(){
//        选用openfeign 默认重试机制return new Retryer.Default(2L,3L,8);}
}

若 Default 方法中没有参数 则用底层的默认参数,若设置了参数 则根据设置参数来执行

public Default(long period, long maxPeriod, int maxAttempts) {this.period = period;this.maxPeriod = maxPeriod;//重试次数this.maxAttempts = maxAttempts;this.attempt = 1;}

3.openfeign拦截器

响应拦截器用的不多 只展示请求拦截器用法

建立拦截器文件

package order.intercaptor;import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;import java.util.UUID;// 需继承 openFeign 中 的请求 拦截器 RequestInterceptor
@Component
public class XTokenRequestInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {// 增加请求头 信息requestTemplate.header("X-TOKEN", UUID.randomUUID().toString().substring(0,10));// 增加请求体 信息//requestTemplate.body();}
}

此时 调用方 可以在请求头中获得 X-TOKEN 信息

如调的Product服务 将请求头的信息进行打印

@RestController
@RequestMapping("/product")
public class ProductController {@Autowiredprivate ProductService productService;@GetMapping("/getProduct/{id}")public String getProduct(@PathVariable("id") Integer id, HttpServletRequest request){String header = request.getHeader("X-TOKEN");System.out.println("调用产品服务,hander信息:"+header);String result = productService.getProduct();return result ;}}

控制台打印

4.结合 sentinel 进行兜底回调

在发生意外返回时,进行的一种操作

(1)在对应的服务中加入依赖

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

 (2)YML 文件中 开启 feign 和 sentinel的兜底

feign:sentinel:enabled: true

(3)@FeignClient注解中配置回调文件

@FeignClient(value = "product",fallback = ProductFeignFallBack.class)
public interface ProductFeign {@GetMapping("/product/getProduct/{id}")String getProduct(@RequestParam("id") Integer id);
}

fallback = ProductFeignFallBack.class 为指定的回调文件

(4)回调文件实现 Feign文件 ,并实现兜底方法 ;(如返回默认信息,或报错提示)

需交给容器管理 使用 @Component注解

package order.feign;import org.springframework.stereotype.Component;@Component
public class ProductFeignFallBack implements ProductFeign{@Overridepublic String getProduct(Integer id) {System.out.println("兜底接口");return "兜底接口";}
}


http://www.hkcw.cn/article/fcSKLsOawc.shtml

相关文章

一键解决Github无法访问或时断时续的问题-Linux环境

创建脚本github_host.sh vi github_host.sh 按i插入文本&#xff0c;将下面一段内容复制进去 #!/bin/bashhosts_path/etc/hosts # 系统 hosts 保存路径 hosts_path_bak/etc/hosts.bak # 系统 hosts 备份路径# 备份 hosts echo "########## 备份 $hosts_path 到 $…

关于海洋数据上云的一些机遇与挑战

知识星球&#xff1a;数据书局。打算通过知识星球将这些年积累的知识、经验分享出来&#xff0c;让各位在数据治理、数据分析的路上少走弯路&#xff0c;另外星球也方便动态更新最近的资料&#xff0c;提供各位一起讨论数据的小圈子 1. 摘要 海洋观测技术的革新以及数据模型…

高效微调方法简述

高效微调简述 一、微调与RAG的区别&#xff1a; 针对成本和性价比选择RAG或微调&#xff0c;那他们适用的范围和区别要提前了解&#xff1b; 形象的描述预训练、微调、提示工程、Agents&#xff1a; 微调流程&#xff1a; 数据保密那就是私域微调&#xff0c;否则就可以线上…

通用优势估计函数(GAE,Generalized Advantage Estimation)详解

强化学习中用于估计优势函数的核心技术&#xff0c;由Schulman等人于2016年提出。核心作用是在强化学习中&#xff0c;用单一可调参数&#xff08;λ&#xff09;平衡偏差与方差&#xff0c;为策略梯度算法&#xff08;如PPO、TRPO、A2C&#xff09;提供稳定、高效的优势函数估…

Java从入门到精通 - 常用API(一)

常用 API 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 常用 API1. 包代码演示 2. String2.1 String 概述代码演示总结 2.2 String 的常用方法代码演示 2.3 String 使用时的注意事项第一点第二点代码演示 总结题目 2.4 String…

n8n部署工作流websecscan-ai-powered-website-security-auditor

人工智能驱动的网站安全审计工作流 此 n8n 工作流程利用DeepSeek V3的模型检测漏洞、配置问题和安全配置错误&#xff0c;提供全面的网站安全分析。该工作流程生成专业的 HTML 安全报告&#xff0c;并直接通过 QQ邮箱 发送。 1.主要特点 双层安全分析&#xff1a;使用专门的…

TC3xx学习笔记-启动过程详解(一)

文章目录 前言Firmware启动过程BMHD Check流程ABM启动Internal Flash启动Bootloader ModeProcessing in case no valid BMHD foundProcessing in case no Boot Mode configured by SSW 总结 前言 之前介绍过UCB BMHD的使用&#xff0c;它在启动过程中起着重要的作用&#xff0…

Docker 镜像制作

目录 镜像制作及原因 快照方式制作镜像 Dockerfile 制作镜像 为什么需要 Dockerfile Dockerfile 指令 常见问题 镜像制作及原因 镜像制作是因为某种需求&#xff0c;官方的镜像无法满足需求&#xff0c;需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往因为以…

模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》

一、前言&#xff1a;重新认识vector的复杂性 在C开发者中&#xff0c;std::vector常被视为"动态数组"的简单实现&#xff0c;但其底层机制实则蕴含着深刻的工程智慧。本篇将通过&#xff1a; 多维度源码剖析&#xff08;GCC/Clang/MSVC三平台实现对比&#xff09;…

散列表(哈希表)

1 散列表的引入 如果我们叭者几个学生按照顺序存储存入到下面这个数组的话&#xff0c;那么每一次的查找方法只有顺序查找或者折半查找&#xff0c;最低的时间复杂度也就只可以下降到(logn)&#xff0c;但是时间复杂度还是可以下降&#xff0c;下降到O(1) 我们只要把对应的学号…

【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数

Data Studio支持在您的数据分析代码中引用自定义的资源和函数&#xff08;支持MaxCompute、EMR、CDH、Flink&#xff09;&#xff0c;您需要先创建或上传资源、函数至目标工作空间&#xff0c;上传后才可在该工作空间的任务中使用。您可参考本文了解如何使用DataWorks可视化方式…

【计算机网络】第3章:传输层—拥塞控制原理

目录 一、PPT 二、总结 &#xff08;一&#xff09;拥塞的定义 &#xff08;二&#xff09;拥塞产生的原因 &#xff08;三&#xff09;拥塞控制的目标 &#xff08;四&#xff09;拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 &#xff08;五&#xff09;…

嵌入式鸿蒙开发环境搭建操作方法与实现

Linux环境搭建镜像下载链接: 链接:https://pan.baidu.com/s/1F2f8ED5V1KwLjyYzKVx2yQ 提取码:Leun vscode和Linux系统连接的详细过程1.下载Visual Studio Code

结构型设计模式之装饰模式

文章目录 1. 装饰模式概述2. 模式结构3. 装饰模式与继承的区别4. 装饰模式的优缺点优点缺点 5. C#代码示例5.1 基本示例 - 饮料与调料5.2 更复杂的示例 - 文本格式化器 6. C#中装饰器模式的实际应用6.1 C# I/O 流处理6.2 ASP.NET Core 中间件 7. 装饰模式与其他设计模式的比较8…

开发的几种格式,TCP的十个重要机制

自定义协议中&#xff0c; 我们有几种常见的数据格式&#xff1a; 1.xml 通过标签来组织数据 请求&#xff1a; 优势&#xff1a; 让数据的可读性变更好了 劣势&#xff1a; 标签非常繁琐&#xff0c;传输的时候也占用更多网络带宽&#xff08;maven会使用xml来管理项目配…

ASP.NET Core OData 实践——Lesson9绑定和未绑定的Function和Action(C#)

大纲 概念支持的接口主要模型设计控制器设计数据源FunctionBound FunctionUnbound Function重载&#xff08;overload&#xff09; ActionBound ActionUnbound Action重载&#xff08;overload&#xff09;Bound ActionUnbound Action 主程序服务文档模型元文档 代码地址参考资…

描述性统计——让数据说话

第03篇&#xff1a;描述性统计——让数据说话 写在前面&#xff1a;大家好&#xff0c;我是蓝皮怪&#xff01;前两篇我们聊了统计学的基本概念和数据类型&#xff0c;这一篇我们要正式进入数据分析的第一步——描述性统计。别被名字吓到&#xff0c;其实就是用一组数字&#x…

【MySQL基础】库的操作:创建、删除与管理数据库

MySQL学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12971838.html?spm1001.2014.3001.5482 前言&#xff1a; 在上一篇我们已经讲解了数据库的基本内容&#xff0c;相信大家对数据库已经有了一些自己的理解&#xff0c;从这篇开始我们就开始正式进入如何…

国足抵达雅加达备战世预赛 力争两连胜晋级希望

中国男足国家队于6月2日晚抵达印度尼西亚首都雅加达,准备参加5日举行的2026美加墨世界杯亚洲区预选赛18强赛第9轮对阵印尼队的比赛。当地时间晚上10时30分,中国队在主教练伊万科维奇的带领下走出雅加达苏加诺-哈达国际机场,随后乘坐大巴前往酒店。伊万科维奇表示,中国队在…

中国龙舟文化“划”向全世界

央视网消息:这个端午假期,热气腾腾的“端午经济”成为消费活力升级的缩影。“国潮”风引领文化消费新风尚,传统文化元素与现代技术交融,非遗体验“烟火气”满满,打造出独特的“国潮端午”氛围,持续火热的国潮消费也一路“火”到了海外。这段时间,在义乌国际商贸城做3D打…