当前位置: 首页 > 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

相关文章:

  • 搭建网站时用到的技术
  • VoiceAgent技术赋能债务重组:合规、高效、有温度的金融债务解决方案
  • Java面试复习指南:基础、并发、JVM与Spring框架
  • 零基础学习RabbitMQ(2)--Linux安装RabbitMQ
  • 硬件工程师笔试面试高频考点汇总——(2025版)
  • (LeetCode 面试经典 150 题) 27.移除元素
  • Spring Boot:运用Redis统计用户在线数量
  • 百度AIP:Springboot人脸对比
  • 【钓鱼预警】针对跨境销售投递Tesla间谍木马
  • <tauri><threejs><rust><GUI>基于tauri和threejs,实现一个3D图形浏览程序
  • 初探 Nacos 原理
  • Qt/C++开发监控GB28181系统/rtp解包/jrtplib库的使用/同时支持udp和tcp被动和主动三种方式解包
  • 日志技术-Logback入门程序
  • 初见语音识别(ASR)
  • 通过审计日志分析和摘要利用大型语言模型进行网络攻击检测
  • K8S: etcdserver: too many requests
  • 2025 年前端框架的深度解析与展望
  • 微服务(nacos+myibatis)中如何在一个模块调用多数据库源的一种方案
  • 矩阵阶数(线性代数) vs. 张量维度(深度学习):线性代数与深度学习的基石辨析,再也不会被矩阵阶数给混淆了
  • 对kotti_image项目进行pytest测试操作实践(失败)
  • 用流媒体做的电台网站/亚马逊的免费网站
  • 陇西学做网站/湖南网站建站系统哪家好
  • 平泉县住房和城乡建设局网站/seo是什么单位
  • 衡水精品网站建设价格/网站建设详细方案
  • 漂亮的企业网站源码/seo博客优化
  • 儿童网站模板/北京搜索引擎优化经理