使用@Asycn时,方法中含有openFeign的调用方法,无法转发请求头信息
来源:10-7 异步入库商品服务功能实现

台风来临的那一夜
2021-10-19
老师,你好,我在使用@Asycn时,如果方法中含有openFeign的调用方法,无法转发请求头信息到另外一个微服务中,要怎么做才能实现满足这一需求呢?
@Configuration
public class FeignConfiguration implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
// 跳过 content-length
if (name.equals("content-length")){
continue;
}
if(name.equals("content-type")){
continue;
}
requestTemplate.header(name, values);
}
}
}
}
}
写回答
1回答
-
张勤一
2021-10-20
同学你好:
其实丢失 header 的原因很简单,因为你使用了 @Async 注解,会使用一个新的线程发送请求,那么,原来线程的信息就丢失了。可以参考下这篇文章中的解决方案:https://blog.csdn.net/MarkusZhang/article/details/107888599
30
相似问题