开发者

解决Feign异步调用丢失上下文问题

开发者 https://www.devze.com 2024-11-20 18:37 出处:网络 作者: 魔舞清华-方
目录问题描述报错原因解决方案总结问题描述 在微服务中使用Feign 调用,为了使FeigBFhLqhvNJWn 调用都是登录状态,会把登录状态的Cookie信息都携带上,使用的 拦截器往请求里面存储 cookie 信息 使用RequestContextH
目录
  • 问题描述
  • 报错原因
  • 解决方案
  • 总结

问题描述

在微服务中使用Feign 调用,为了使FeigBFhLqhvNJWn 调用都是登录状态,会把登录状态的Cookie信息都携带上,使用的 拦截器往请求里面存储 cookie 信息 使用RequestContextHolder

使用Fehttp://www.devze.comign 远程调用php 使用异步的模式 (本人是 order 服务异步调用 会员服务,购物车服务),

在 order服务 本人使用拦截器往往请求里面加入了Cookie信息。

解决Feign异步调用丢失上下文问题

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

异步编排代码如下:

解决Feign异步调用丢失上下文问题

报错原因

RequestContextHolder 里面 ThreadLocajavascriptl 存取信息

因为拦截器 利用ThreadLocalBFhLqhvNJW获取上下文信息,如果是异步的话,肯定就无法获取信息了,

解决Feign异步调用丢失上下文问题

解决Feign异步调用丢失上下文问题

解决Feign异步调用丢失上下文问题

解决方案

在使用异步调用的时候,把RequestContextHolder 数据同步到 开启的线程的RequestContextHolder 里面

代码如下:

解决Feign异步调用丢失上下文问题

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消