关于 openFeign 调用时 hystrix 隔离策略导致的线程异常
来源:15-5 远程服务调用 Feign 接口定义及配置(2)

橘Cc
2023-04-18
核心问题代码如下:
package com.imooc.ecommerce.feign;
import feign.RequestInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
@Configuration
public class FeignConfig {
/**
* 给 Feign 配置请求拦截器
* RequestInterceptor 是我们提供的 open-feign 的请求拦截器,把 Header 信息传递
* */
@Bean
public RequestInterceptor headerInterceptor() {
return template -> {
ServletRequestAttributes attributes =
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
...
bug复现:
- 当我使用线程池隔离策略时候,attributes 的值为null,调用其他微服务符合逻辑的报错了
- 后来考虑可能不在同一个线程池里,换成信号量隔离,attributes 拿到了值,并且成功调用
提问:
- 难道不能使用线程池隔离?或者有其他解决办法吗?
写回答
1回答
-
张勤一
2023-04-24
有可能是的,可能是线程之间的数据同步需要更上层的线程或者模块来处理;
10
相似问题
异步线程池问题
回答 1
OpenFeign请求被拦截
回答 1