>
>
> 好吧,该问题已解决。有点小坑(⊙o⊙)…
> 处理:将前缀 registrys 修改为 registries 即可。
> 分析:原本基于apache
> dubbo-spring-boot-starter模块的源码去找到的DubboConfigurationProperties中的registrys
> 字段,所以假想着多注册中心配置(上面失效的配置)是可行的,结果并调试了好多圈,死活不生效。
> 实在没办法就去研究dubbo本身的多注册中心配置,然后尝试着配置
> dubbo.registries属性结果竟然成功了。dubbo.registries是通过DubboConfigBindingBeanPostProcessor来对注册中心进行配置初始化的。
确实是个坑,正常理解应通过`DubboConfigurationProperties`属性绑定对象获取属性值。但具体实现确实是先注册一系列的`AbstranctConfig`
`Bean`定义,实例化这些Bean时由`DubboConfigBindingBeanPostProcessor`后置处理器从属性文件拿到对应的值赋值,
压根没从属性绑定对象取值,属性绑定对象定义的属性名是: `registrys`,
而`DubboConfigBindingBeanPostProcessor`后置处理器是根据`dubbo.registries`前缀从属性源文件取值.
两边不一致造成一种假象,容易出错. 应该是设计上的缺陷.
* 属性绑定对象支持这种写法:
```
dubbo:
registrys:
zk1: zookeeper://localhost:2181
zk2: zookeeper://localhost:2182
zk3: zookeeper://localhost:2183
```
这种写法是通过构造器创建`RegistryConfig`对象, 把`registrys -> registies`还是死活报错
* 最后写成这种写法就OK:
```
dubbo:
registries:
zk1:
address: zookeeper://localhost:2181
zk2:
address: zookeeper://localhost:2182
zk3:
address: zookeeper://localhost:2183
```
因为`DubboConfigBindingBeanPostProcessor`后置处理器是通过属性设置的, 所以必须存在属性名
[ Full content available at:
https://github.com/apache/dubbo-spring-boot-project/issues/535 ]
This message was relayed via gitbox.apache.org for
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]