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

 更新时间:2024年11月11日 16:00:09   作者:魔舞清华-方  
在微服务中使用Feign调用时,若需要携带登录状态的Cookie信息,通常会使用拦截器,但在异步调用(如order服务异步调用会员服务和购物车服务)时,拦截器可能无法获取上下文信息,导致异常,解决方法是将RequestContextHolder的数据同步到新开启的线程中

问题描述

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

使用Feign 远程调用 使用异步的模式 (本人是 order 服务异步调用 会员服务,购物车服务),

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

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

异步编排代码如下:

报错原因

RequestContextHolder 里面 ThreadLocal 存取信息

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

解决方案

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

代码如下:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JavaWeb后台购物车类实现代码详解

    JavaWeb后台购物车类实现代码详解

    这篇文章主要介绍了JavaWeb后台购物车类实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Spring JPA整合QueryDSL的示例代码

    Spring JPA整合QueryDSL的示例代码

    这篇文章主要介绍了Spring JPA整合QueryDSL的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • JavaGUI常用三种布局使用介绍

    JavaGUI常用三种布局使用介绍

    这篇文章主要介绍了JavaGUI常用三种布局-FlowLayout、BorderLayout、GridLayout,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • SpringCloud超详细讲解负载均衡组件Ribbon源码

    SpringCloud超详细讲解负载均衡组件Ribbon源码

    在微服务中,对服务进行拆分之后,必然会带来微服务之间的通信需求,而每个微服务为了保证高可用性,又会去部署集群,那么面对一个集群微服务进行通信的时候,如何进行负载均衡也是必然需要考虑的问题
    2022-07-07
  • 浅谈Java中replace与replaceAll区别

    浅谈Java中replace与replaceAll区别

    这篇文章主要介绍了Java中replace与replaceAll区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 高效的java版排列组合算法

    高效的java版排列组合算法

    这篇文章主要为大家详细介绍了高效的java版排列组合算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Spring Cloud Config Client超时及重试示例详解

    Spring Cloud Config Client超时及重试示例详解

    这篇文章主要给大家介绍了关于Spring Cloud Config Client超时及重试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2018-05-05
  • 基于SSM+Shiro+Bootstrap实现用户权限管理系统

    基于SSM+Shiro+Bootstrap实现用户权限管理系统

    这篇文章主要介绍了基于SSM+Shiro实现一个用户权限管理系统,每位用户只可访问指定的页面,文中的示例代码讲解详细,对我们学习或工作有一定帮助,快跟随小编一起学习吧
    2021-12-12
  • Python安装Jupyter Notebook配置使用教程详解

    Python安装Jupyter Notebook配置使用教程详解

    这篇文章主要介绍了Python安装Jupyter Notebook配置使用教程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Maven和IntelliJ IDEA搭建多模块微服务的实现

    Maven和IntelliJ IDEA搭建多模块微服务的实现

    本文主要介绍了Maven和IntelliJ IDEA搭建多模块微服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论