[apache/dubbo]项目使用dubbo-2.7.12,使用dubbo-admin-0.3.0设置的标签路由规则路径和项目中监听的路径不匹配,导致标签路由规则不生效

2023-12-25 871 views
4
Environment
  • Dubbo version: 2.7.12
  • Operating System version: window10
  • Java version: 1.8

使用dubbo-admin-0.3.0设置的标签路由规则路径为 /dubbo/dev/config/dubbo/gh-demo.tag-router 项目中监听的路径为: /dubbo/config/dubbo/gh-demo.tag-router,导致标签路由规则不生效

主要原因是dubbo-admin设置标签路由会带上registy.group,也就是环境,例如dev 但是dubbo-2.7.12中tagRoute的监听类将group没有动态取值,而是取了一个枚举值:dubbo,导致无法使用registy.group区分配置环境

dubbo-2.7.12设置group的部分代码

String DEFAULT_GROUP = "dubbo";

default void addListener(String key, ConfigurationListener listener) { addListener(key, getDefaultGroup(), listener);

/**

  • Get the default group for the operations
  • @return The default value is {@link #DEFAULT_GROUP "dubbo"}
  • @since 2.7.5 */ default String getDefaultGroup() { return DEFAULT_GROUP; }

回答

5

dubbo-admin 是和 dubbo 的配置路径保证一致的,没看见哪里加了环境进去。 image

1

昨天我是想传图片上来的,结果一直超时就没传,getNodePath这里进去的toRootDir会拼接一个root,就是这个环境

5

你 dubbo-admin 配置中心的地址是怎么填写的?group 要指定为 dubbo 或者不填写,这个 root 是由 group 拼接来的。

8

admin.registry.group=dubbo/dev admin.config-center.group=dubbo/dev admin.metadata-report.group=dubbo/dev

我认为这个group就是去在一个注册中心中隔离环境的,所以我的group是带环境的, 如果我不带环境,我是无法拿到dubbo/dev节点下面注册的服务的

2

admin.config-center.group 可以不带环境,现在配置中心的 group 写死的 dubbo。

8

1、这样的话,如果使用一个注册中心,使用group区分环境注册的服务会公用一个标签路由配置文件,无法将测试和生产的配置隔离,容易出现问题。 2、admin.config-center.group这个参数显得没有必要,放出来用户配置了,反而会导致配置路径错误。

9

尝试使用3.1.0 @JayeShen