springBoot与dubbo整合,如何在消费者端配置多注册中心

由于多个provider注册在了两个zookeeper上,之前使用在spring时,使用的是dubbo配置文件,定义了多个registry,通过id可以进行区分。

<dubbo:registry id="test1" protocol="zookeeper" address="${dubbo.address}" />
<dubbo:registry id="test2" protocol="zookeeper" address="${dubbo.address1}" />

<dubbo:reference registry="test1" id="cityDubboService" interface="com.example.demo.CityDubboService" check="false" />

将customer端改为使用springboot框架,使用注解的形式,对provider进行调用。

application.properties配置文件中添加dubbo相关调用信息

spring.dubbo.application.name=consumer
spring.dubbo.application.registries[0].address=zookeeper:#127.0.0.1:2181
spring.dubbo.application.registries[0].registry="test1"
spring.dubbo.application.registries[1].address=zookeeper:#127.0.0.2:2181
spring.dubbo.application.registries[1].registry="test2"
spring.dubbo.scan=com.example.demo.controller

在调用时添加注解及参数为

@Reference(registry="test1")
CityDubboService cityDubboService;

无法调取dubbo端对象(注:同样代码,单注册中心调用成功,所以provider端应该没有问题,问题可能出现在consumer端的配置,代码如上)

阅读 13.2k
4 个回答
新手上路,请多包涵

遇到同样的问题,自己写的registry bean并且指定,但是似乎无效

时间:2019-01-22
本答案是基于springboot2.x版本。
1、依赖版本用官方推荐,因为dubbo已捐献给apache,所以整合时用官网推荐的Dubbo Spring Boot Starter,如下:
http://dubbo.apache.org/zh-cn...

clipboard.png

2、在启动类上添加注解@EnableDubbo(multipleConfig = true),注意,此处multipleConfig默认为false,如果要配置多个注册中心等,需要在此处配置为true。

clipboard.png

3、参考官方文档中的描述【有多行同名标签配置,可用 id 号区分
http://dubbo.apache.org/zh-cn...
注意有坑,如图:

clipboard.png
经过测试,配置dubbo.registry.c1.address=zookeeper://127.0.0.1:2181并没有作用,
需要改成【dubbo.registries.c1.address=zookeeper://127.0.0.1:2181】,此处的c1,代表这组zk的id。

最后总结一下,这类问题搜索过很多答复,全是如何配集群,只能说那些回答如何配集群的根本连题目都没看懂。

1,注册中心地址应该是zookeeper://xxxx,用#不行。
2,spring.dubbo.registries类型是Map<String, RegistryConfig>,你那种写法是List赋值方法,而不是Map的赋值方法。
应该这样写
spring.dubbo.registries.xxx.address=zookeeper://xxxx
spring.dubbo.registries.xxx.id=local
spring.dubbo.registries.yyy.address=zookeeper://xxx
spring.dubbo.registries.yyy.id=server
xxx和yyy随意

我自己的消费者多注册配置 可能admin不识别但是肯定是注册成功的 可以调用

#配置中心  如果不设置这个 其注册中心地址要设置zookeeper://开头  如果不设置会默认zookeeper但将只作服务治理用途。
dubbo.registry.protocol=zookeeper
#多注册中心注册方式  这里不一定要设置成registry1和2 名字可以自己定义  是这个定义注册中心的名字
dubbo.registries.registry1.address=zookeeper://127.0.0.1:2181
dubbo.registries.registry2.address=zookeeper://127.0.0.1:2182
#设置默认的注册中心
dubbo.registries.registry2.default=true
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题