Jun 08, 2020
记一次ThreadLocal取值失败的问题
简单描述一下问题的情况
1.springboot项目
2.使用@FeignClient处理微服务之间的调用
3.项目中使用了feign.RequestInterceptor处理token传递,token校验完成后存放于线程变量ThreadLocal中
4.开启hystrix后,在RequestInterceptor中无法获取到ThreadLocal存储的token
查找问题的过程
1.首先通过断点发现ThreadLocal取值失败
2.怀疑是不在同一线程中,打印线程名,证实确实不是同一线程
3.了解到Hystrix默认使用线程隔离
处理方式
1.将ThreadLocal换成InheritableThreadLocal,这样可以在子线程内也获取到存入的值