Files
cn-rdms/rdms-framework/rdms-spring-boot-starter-env/readme.md
2026-03-11 19:32:37 +08:00

24 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这个模块的核心作用是“环境标签(tag)透传 + 按标签路由”。
它具体做了什么
1. 启动早期把 rdms.env.tag 映射到 Nacos 实例 metadata (spring.cloud.nacos.discovery.metadata.tag)。
文件: EnvEnvironmentPostProcessor.java
2. Web 请求进来时读取请求头 tag,放到线程上下文。
文件: EnvWebFilter.java
3. 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 做流量隔离(比如“我发起的请求尽量打到我这套实例”)。
再具体点,作用有三层:
1. 给本实例打 Nacos metadata tag。
2. 接口收到 tag 请求头后放到上下文。
3. Feign/LB 优先选同 tag 实例。
所以 dev 不配 tag通常代表该环境不需要“按人/按版本隔离流量”,走默认路由即可。