异步子线程Feign调用增加请求头
1.前言
项目开发的时候遇到一种情况,为了减少接口时间,需要使用异步将计算结果部分放入子线程中自行运行,主线程不必一直等待计算结果,同时项目中使用请求头进行数据隔离。
2.问题
因为项目中有拦截器的存在,在接口调用的时候必须要增加请求头,最开始直接在子线程中增加了请求头,本服务的DAO层调用没有问题,但是当进行feign接口调用时,提示请求头不存在。
3.解决方案
方案1
最开始同事提供了一种方案:取出主线程中的Attributes再放入子线程中,代码如下:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
在子线程中set进去: