最近spring boot项目中由于使用了spring cloud 的hystrix 导致了threadLocal中数据丢失,其实具体也没有使用hystrix,但是显示的把他打开了,导致了此问题。

导致此问题的代码逻辑如下:服务之间的调用采用的feignclient,采用feignclient拦截器获取上游设置到threadlocal中的数据。

@Slf4j
public class TenantSupportInterceptor implements RequestInterceptor { public void apply(RequestTemplate template) {
String tenantNo = Optional.ofNullable(LocalHolder.getTenantNo());
template.header(CommonConstants.TENANT_NO, tenantNo);
} }
public final class LocalHolder {

    private LocalHolder() {
} private static final InheritableThreadLocal<String> TENANT_NO_THREADLOCAL = new InheritableThreadLocal<>(); public static void setTenantNo(String tenantNo) {
TENANT_NO_THREADLOCAL.set(tenantNo);
} public static String getTenantNo() {
return TENANT_NO_THREADLOCAL.get();
} public static void removeTenantNo() {
TENANT_NO_THREADLOCAL.remove();
}
}

具体为什么采用InheritableThreadLocal下文有说明。

但是有时候就拿不到。经过排查,这两边的线程发生了变化,导致取不到值。导致线程发生变化的原因是显示的声明了hystrix为true。

只需要把这个设置成false就好。

但是如果项目中真真的是用了hystrix呢?

引用一下文档进行说明:

https://mp.weixin.qq.com/s?__biz=MzIwMDY0Nzk2Mw==&mid=2650319274&idx=1&sn=0a5bf8ef9148ba8562e0e1c58038da98&chksm=8ef5fddeb98274c8a88522c56050b5e5c7f6d510c5345cec795a130d3abd2b53a16513f578ce&scene=21#wechat_redirect

https://cloud.tencent.com/developer/article/1082737

最新文章

  1. [转]nginx+fastcgi+c/c++搭建高性能Web框架
  2. Hadoop2.2 federnation联盟的搭建
  3. Java基础知识强化之集合框架笔记41:Set集合之HashSet存储自定义对象并遍历练习
  4. 管理工具 Kafka Manager
  5. Linux之例行(任务调度)
  6. An Introduction to Stock Market Data Analysis with R (Part 1)
  7. 查找命令which、whereis、locate
  8. HTML5_canvas_图片加载_双缓冲_跳帧闪烁问题
  9. 002_关于six版本过低报cannot import name urllib_parse的问题
  10. mongodb系列~mongodb定时删除数据
  11. java并发编程艺术
  12. 23个Python爬虫开源项目代码
  13. Python itsdangerous 生成token和验证token
  14. JS高程研读记录一【事件流】
  15. shell教程-002:常见的Shell种类
  16. Spark分析之启动流程
  17. asp.net如何隐藏表格(table)的一行
  18. android 时间控件概述
  19. html5的常用函数
  20. BZOJ4415:[SHOI2013]发牌(线段树)

热门文章

  1. 什么是java变量,java变量是什么
  2. ycsb 测试Hbase性能
  3. docker 指定版本rpm包安装
  4. Sql 中常用时间处理函数
  5. 关于如何将sublime配置C++环境的总结
  6. Astyle 一键格式化项目代码
  7. 随机的标识符GUID
  8. 网络协议 3 - 物理层 和 MAC 层
  9. ES6-扩展运算符和rest运算符
  10. latex初步入门:springer llncs