问题描述
在微服务中使用Feign 调用,为了使Feign 调用都是登录状态,会把登录状态的Cookie信息都携带上,使用的 拦截器往请求里面存储 cookie 信息 使用RequestContextHolder
使用Feign 远程调用 使用异步的模式 (本人是 order 服务异步调用 会员服务,购物车服务),
在 order服务 本人使用拦截器往往请求里面加入了Cookie信息。
在 会员服务,和购物车服务会 空异常,原因是 order 拦截器无法 获取上下文信息 ,上下文为null;
异步编排代码如下:
报错原因
RequestContextHolder 里面 ThreadLocal 存取信息
因为拦截器 利用ThreadLocal
来获取上下文信息,如果是异步的话,肯定就无法获取信息了,
解决方案:
在使用异步调用的时候,把RequestContextHolder 数据同步到 开启的线程的RequestContextHolder 里面
代码如下: