Feign远程调用丢失请求头问题处理--异步任务执行远程请求线程丢失请求属性问题处理

在关于Feign远程调用丢失请求头问题处理中解决了远程调用发送请求丢失老请求中请求头的问题。A方法接收浏览器中的请求,B方法是A方法中嵌套方法用来发送Feign远程调用。如果B方法是在异步任务CompletableFuture.runAsync(()->{},Executor)中执行并启用线程池分配新线程,A方法中还有C方法也是异步任务Feign远程调用执行。会出现一个问题 :之前 在Feign拦截器给远程请求添加请求头headers数据时 先要从浏览器发送的老请求中获得请求头数据,而获取原始请求使用RequestContextHolder.getRequestAttributes().getRequest() 会是一个null值。

原因:

使用异步任务开启线程池分配新线程执行Feign远程调用,那么Feign拦截器中使用线程也是线程池分配的新的子线程。A方法的主线程的RequestContextHolder.getRequestAttributes()包含数据而异步任务中线程池生成的子线程的RequestContextHolder.getRequestAttributes()不包含数据。  Fegin远程调用 上一个任务是Feign拦截器,在Fegin远程调用之前执行,所属线程都是同一个子线程。

解决:

第一种:设置让主线程的RequestContextHolder的RequestAttributes对象继承给子线程

RequestContextHolder.setRequestAttributes(requestAttributes, true);

true 表示子线程继承主线程请求。

第二种:在每个异步方法内设置setRequestAttributes。

 

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

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

相关文章

从0到1入门C++编程——02 通讯录管理系统

文章目录 一、创建结构体及菜单显示二、添加联系人三、显示联系人四、删除联系人五、查找联系人六、修改联系人七、清空联系人八、退出通讯录 本文通过C实现一个通讯录管理系统,系统要实现的功能如下。 1、添加联系人:向通讯录中添加新人,信息…

Zookeeper-Zookeeper选举源码

看源码方法: 1、先使用:先看官方文档快速掌握框架的基本使用 2、抓主线:找一个demo入手,顺藤摸瓜快速静态看一遍框架的主线源码,画出源码主流程图,切勿一开始就陷入源码的细枝末节,否则会把自…

【分布式微服务专题】SpringSecurity快速入门

目录 前言阅读对象阅读导航前置知识笔记正文一、Spring Security介绍1.1 什么是Spring Security1.2 它是干什么的1.3 Spring Security和Shiro比较 二、快速开始2.1 用户认证2.1.1 设置用户名2.1.1.1 基于application.yml配置文件2.1.1.2 基于Java Config配置方式 2.1.2 设置加密…

71内网安全-域横向网络传输应用层隧道技术

必备知识点; 代理和隧道技术的区别? 代理主要解决的是网络访问问题,隧道是对过滤的绕过, 隧道技术是为了解决什么 解决被防火墙一些设备,ids(入侵检测系统)进行拦截的东西进行突破&#xff0…

图像特征提取之Hog特征提取

HOG全称(histogram of oriented gradients),方向梯度直方图,可以用来提取表示图像的特征,本质就是一行高维特征。 HOG特征提取步骤 图像预处理(gamma校正和灰度化)【option】 计算每一个像素点的梯度值&am…

00-开篇导读:学习分库分表开源框架的正确方法

1 前言 互联网高速发展带来海量的信息化数据,也带来更多的技术挑战。各种智能终端设备(比如摄像头或车载设备等)以每天千万级的数据量上报业务数据,电商、社交等互联网行业更不必说。这样量级的数据处理,已经远不是传…

Note: An Interesting Festival

An Interesting Festival 一个有趣的节日。 festival The Agricultural Feast takes place after the independence Day. 农业盛会在独立日后举行 takes place independence feast agricultural It is not a worldwide celebration. 它不是一个全球的庆典。 worldwide ce…

【模拟电路】门电路-逻辑门

一、逻辑门 二、与门 三、或门 四、非门 五、异或门 六、与非门 七、或非门 一、逻辑门 逻辑门是数字电子电路中的基本构建块,用于执行不同的逻辑运算。每种逻辑门都有特定的输入和输出关系,实现了基本的逻辑功能。以下是一些常见的逻辑门: …

基于深度卷积神经网络的垃圾分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细介绍了一基于深度卷积神经网络的垃圾分类识别系统。采用TensorFlow和Keras框架,通过卷积神经网络(CNN)进行模型训练和预测。引入迁移学习中的VGG16模型…

用html,js和layui写一个简单的点击打怪小游戏

介绍&#xff1a; 一个简单的打怪小游戏&#xff0c;点击开始游戏后&#xff0c;出现攻击按钮&#xff0c;击败怪物后可以选择继续下一关和结束游戏。 继续下一个怪兽的血量会增加5点&#xff0c;攻击按钮会随机变色。 效果图&#xff1a; html代码&#xff1a; <!DOCTYPE…

小兔鲜儿 uniapp - SKU 模块

目录 存货单位&#xff08;SKU&#xff09;​ 插件市场​ 下载 SKU 插件​ 使用 SKU 插件​ 插件类型问题​ 核心业务​ 渲染商品规格​ 打开弹窗交互​ 渲染被选中的值​ 存货单位&#xff08;SKU&#xff09;​ SKU 概念 存货单位&#xff08;Stock Keeping Unit&a…

使用docker轻量化部署snmp agent(SNMPv2访问)

文章目录 服务器环境说明单机部署&#xff08;非挂载conf文件版&#xff09;debian:buster-slim容器简介实现步骤创建Dockerfile创建SNMP配置文件 (snmpd.conf)构建Docker镜像运行Docker容器 注意补充复制容器文件到本地容器、镜像操作 单机部署&#xff08;挂载conf文件版&…