1.2 KiB
1.2 KiB
这个模块的核心作用是“环境标签(tag)透传 + 按标签路由”。
它具体做了什么
- 启动早期把 rdms.env.tag 映射到 Nacos 实例 metadata (spring.cloud.nacos.discovery.metadata.tag)。 文件: EnvEnvironmentPostProcessor.java
- Web 请求进来时读取请求头 tag,放到线程上下文。 文件: EnvWebFilter.java
- Feign 调用时把上下文里的 tag 继续写到下游请求头。 文件: EnvLoadBalancerClient.java
rdms.env.tag 在这个项目里是可选的,不配也能跑。 代码里明确是“有就生效、没有就跳过”:
- 读取 rdms.env.tag,为空就直接返回,不改路由标签 EnvEnvironmentPostProcessor.java
- application-local.yaml 里配了 rdms.env.tag: ${HOSTNAME},而 dev 没配 application-local.yaml 它的目的就是你说的这种场景之一: 多人共用一个 Nacos namespace/集群时,用 tag 做流量隔离(比如“我发起的请求尽量打到我这套实例”)。 再具体点,作用有三层:
- 给本实例打 Nacos metadata tag。
- 接口收到 tag 请求头后放到上下文。
- Feign/LB 优先选同 tag 实例。 所以 dev 不配 tag,通常代表该环境不需要“按人/按版本隔离流量”,走默认路由即可。