当前位置: 首页 > 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.xdnf.cn/news/1066897.html

相关文章:

  • 支持java8的kafka版本
  • Python csv 模块
  • Spring MVC极简入门:从@Request到Postman的全链路开发
  • python中学物理实验模拟:平抛运动和抛物运动
  • 苹果芯片macOS安装版Homebrew(亲测) ,一键安装node、python、vscode等,比绿色软件还干净、无污染
  • 触摸屏(典型 I2C + Input 子系统设备)从设备树解析到触摸事件上报
  • 深入浅出Node.js后端开发
  • Python基础之函数
  • Python基础(​​FAISS​和​​Chroma​)
  • Redis哨兵模式深度解析与实战部署
  • 如何实现财务自由
  • 操作系统 第九章 部分
  • 飞往大厂梦之算法提升-7
  • 第一节 布局与盒模型-Flex与Grid布局对比
  • Java的SpringAI+Deepseek大模型实战【二】
  • Vue实现选中多张图片一起拖拽功能
  • 华为HN8145V光猫改华为蓝色公版界面,三网通用,xgpon公版光猫
  • [NocoDB] 在局域网中调整Float类型显示精度的部署经验
  • 《哈希表》K倍区间(解题报告)
  • 数组题解——​轮转数组【LeetCode】
  • K8S下http请求在ingress和nginx间无限循环的问题
  • Docker 永久换源步骤
  • 基于ASP4644多通道降压技术在电力监测系统中集成应用与发展前景
  • Maven 之 JUnit 测试体系构建全解析
  • 基于SpringBoot + Vue 的网上拍卖系统
  • leetcode543-二叉树的直径
  • 通信网络编程3.0——JAVA
  • Spring Cloud微服务
  • Java面试题027:一文深入了解数据库Redis(3)
  • 【软考高级系统架构论文】论数据分片技术及其应用