解决Feign异步调用丢失上下文问题
问题描述
在微服务中使用Feign 调用,为了使Feign 调用都是登录状态,会把登录状态的Cookie信息都携带上,使用的 拦截器往请求里面存储 cookie 信息 使用RequestContextHolder
使用Feign 远程调用 使用异步的模式 (本人是 order 服务异步调用 会员服务,购物车服务),
在 order服务 本人使用拦截器往往请求里面加入了Cookie信息。

在 会员服务,和购物车服务会 空异常,原因是 order 拦截器无法 获取上下文信息 ,上下文为null;
异步编排代码如下:

报错原因
RequestContextHolder 里面 ThreadLocal 存取信息
因为拦截器 利用ThreadLocal 来获取上下文信息,如果是异步的话,肯定就无法获取信息了,



解决方案
在使用异步调用的时候,把RequestContextHolder 数据同步到 开启的线程的RequestContextHolder 里面
代码如下:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
logback如何去掉DubboMonitor烦人的INFO日志
这篇文章主要介绍了logback如何去掉DubboMonitor烦人的INFO日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07
Spring boot 整合 Redisson实现分布式锁并验证功能
这篇文章主要介绍了Spring boot 整合 Redisson实现分布式锁并验证,redisson是官方推荐的分布式锁实现方案,采用redis自身的原子命令和lua脚本来实现,需要的朋友可以参考下2022-05-05
ThreadPoolExecutor线程池原理及其execute方法(详解)
下面小编就为大家带来一篇ThreadPoolExecutor线程池原理及其execute方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-06-06
Spring Boot 集成Shiro的多realm配置过程
这篇文章主要介绍了Spring Boot 集成Shiro的多realm配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10


最新评论