当前位置: 首页 > news >正文

基于openfeign拦截器RequestInterceptor实现的微服务之间的夹带转发

需求:

trade服务需要在下单后清空购物车

分析:

显然,清空购物车需要调用cart服务,也就是这个功能的实现涉及到了微服务之间的转发。

其次,清空购车还需要userId,所以需要使用RequestInterceptor来实现夹带信息。

完整流程:

1.前端收到点击事件“下单”,根据uri调用后端接口--->

2.springcloud网关拿到uri进行解析,从header中提取出token,Springcloud的Global拦截器进行鉴权,并且将其中根据token解析出的info存放在header中,进行后续的拦截过程。

网关查找到对应的服务,根据nacos提供的表单,采用负载均衡,选取对应端口携带header中的info进行转发--->

3.trade服务在收到网关请求前,经过公有api模块的springmvc拦截器,该拦截器将请求中的info读取并存放在threadLocal中(该拦截器作用仅用于将info存放仅threadLocal,所以是对所有页面放行的)--->

4.trade模块执行对应功能,执行中调用cart模块--->

6.调用cart模块使用openfeign进行请求发送,由于cart服务需要userId,所以需要经过openfeign拦截器进行增强。因为对cart模块发起的openfeign请求是由trade模块完成的,所以使用的线程仍然是执行trade模块功能的线程,该线程的threadLocal中存储着info,拦截器将info信息从threadLocal中取出并存放在请求连接的请求头中。--->

7.openfeign请求cart服务,openfeign请求仍然是一个http请求,既然是http请求,定然会被公有拦截器拦截。所以,拦截器取出请求头中的info,并将其存在对应新线程的threadLocal中,执行清空购物车功能。--->

8.结束

总结:

整个过程实际上是info信息的传递

最初后端初次鉴权——在springcloud的GlobalFilter中进行,鉴权后得到info开始传递:

公有拦截器:从header读取info,并存入trade线程的threadLocal

openfeign:将threadLocal的info取出,装进新http请求的header

共有拦截器:从header读取info,并存入cart线程的threadLocal

http://www.lryc.cn/news/574106.html

相关文章:

  • react快速开始项目模板
  • Web基础 -SpringBoot入门 -HTTP-分层解耦 -三层架构
  • Protobuf 深度解析:从基础语法到高级应用
  • 【目标检测】图像处理基础:像素、分辨率与图像格式解析
  • “自动化失败归因”测试集-WhoWhen
  • 在大数据求职面试中如何回答分布式协调与数据挖掘问题
  • 云原生 CAD 让制造业设计协同更便捷
  • 3D模式格式转换工具HOOPS Exchange如何将3D PDF转换为STEP格式?
  • 【实时Linux实战系列】使用定时器实现定时任务
  • 计算机网络:(六)超详细讲解数据链路层 (附带图谱表格更好对比理解)
  • docker镜像中集成act工具
  • 刀客doc:阿里巴巴集团品牌部划归集团公关管理
  • Java基础(三):逻辑运算符详解
  • P3258 [JLOI2014] 松鼠的新家
  • (LeetCode 面试经典 150 题) 27.移除元素
  • PR出书启动
  • ✨通义万相2.1深度解析:AI视频生成引擎FLF2V-14B全流程指南(命令行参数+模型架构+数据流)
  • VTK.js
  • 容声冰箱如何让荔枝在世俱杯赛场外再“长7天”
  • Elasticsearch API访问权限控制:禁用外部端点访问
  • 在Ubuntu上设置Selenium自动化测试环境:Chrome与Firefox的详细指南
  • 海拔案例分享-门店业绩管理小程序
  • 小程序 顶部栏标题栏 下拉滚动 渐显白色背景
  • Python Django全功能框架开发秘籍
  • 多模态大语言模型arxiv论文略读(133)
  • 【nvidia-H100-ib排障实战2】:服务器 InfiniBand 网络性能问题深度分析
  • 学习Linux进程冻结技术
  • 科技资讯杂志科技资讯杂志社科技资讯编辑部2025年第9期目录
  • 微算法科技(NASDAQ:MLGO)研发可信共识算法TCA,解决区块链微服务中的数据一致性与安全挑战
  • 笔试强训:Day8