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
,这样可以在子线程
内也获取到存入的值