spring cloud微服务中多线程下,子线程通过feign调用其它服务,请求头token等丢失_子线程异步调用微服务token

在Spring Cloud微服务环境中,遇到子线程调用Feign服务时请求头Token丢失的问题。解决方案是利用ThreadLocal存储主线程的Token,并在Feign配置中获取并设置到请求头。文章还分享了作者的IT从业经历,并提供了全面的大数据学习资料和交流群信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static String get(String key) {
    return headerMap.get().get(key);
}

public static void set(String key, String value){
    headerMap.get().put(key,value);
}

}


在线程执行前加:  
 (1



	Enumeration<String> headerNames = servletRequest.getHeaderNames();
    while (headerNames.hasMoreElements()){
        String name = headerNames.nextElement();
        if (Objects.equals(name,"feignheader")){
            ThreadLocalUtil.set(name,servletRequest.getHeader(name));
        }
    }

或者直接获取token,在需要的地方再进行赋值。  
 (2



RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes srat = (ServletRequestAttributes) requestAttributes;
HttpServletRequest request = srat.getRequest();
ThreadLocalUtil.set(“token”, request.getHeader(“authorization”));


修改监听处获取请求头信息赋值


(1



@Slf4j
@Conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值