dubbo 解决既是消费者又是提供者 Duplicate application configs 的问题
首先 有应用A 是 提供者
应用B 来实现既是消费者又是提供者
在应用 B 这边新建两个xml
dubbo-consumer.xml 消费者
注意:
服务方用什么协议。在哪个端口暴露服务
消费方用什么协议获取服务。在哪个端口暴露自己的服务
》》
既是消费方又是服务方,协议名获取服务,端口上暴露服务---服务方获取服务只跟协议有关,端口是用来自身暴露服务的
<dubbo:protocol name="协议名" port="端口" />
<!-- 自动扫描注解:通过dubbo实现 --> <dubbo:annotation package="test.dubbo.*" /> <!-- 必须加上:提供方应用服务端的名称 --> <dubbo:application name="person-client" /> <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo协议在20881端口服务 --> <dubbo:protocol name="dubbo" port="20881" />
<!-- 注册需要使用的dubbo服务,通过interface指定服务接口 --> <dubbo:reference id="personInfoService" interface="test.dubbo.itf.IpersonInfoService" timeout="10000" check="false" />
dubbo-provider.xml 提供者
<!-- 自动扫描注解:通过dubbo实现 --> <dubbo:annotation package="test.dubbo.*" /> <!-- 必须加上:提供方应用服务端的名称 --> <dubbo:application name="person-center" /> <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 服务端声明需要对外开放提供服务的接口 --> <dubbo:service interface="test.dubbo.itf.IpersonInfoService" protocol="dubbo" ref="personInfoService" />
启动之后会报错: Duplicate application configs: <dubbo:application name="person-client" id="person-client" /> and <dubbo:application name="person-center" id="person-center" />
重复的应用程序的配置
解决办法是把其中一个xml中的配置文件删除,留一个就好了
比如删除 dubbo-provider.xml 里面的
<!-- 自动扫描注解:通过dubbo实现 --> <dubbo:annotation package="test.dubbo.*" /> <!-- 必须加上:提供方应用服务端的名称 --> <dubbo:application name="person-center" /> <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" />
修改后的 xml文件
dubbo-consumer.xml 消费者
<!-- 自动扫描注解:通过dubbo实现 --> <dubbo:annotation package="test.dubbo.*" /> <!-- 必须加上:提供方应用服务端的名称 --> <dubbo:application name="person-client" /> <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20881端口服务 --> <dubbo:protocol name="dubbo" port="20881" /> <!-- 注册需要使用的dubbo服务,通过interface指定服务接口 --> <dubbo:reference id="personInfoService" interface="test.dubbo.itf.IpersonInfoService" timeout="10000" check="false" />
dubbo-provider.xml 提供者
<!-- 服务端声明需要对外开放提供服务的接口 --> <dubbo:service interface="test.dubbo.itf.IpersonInfoService" protocol="dubbo" ref="personInfoService" />
原因是一个应用不能有重复的应用程序配置,去掉一个相同的配置就可以了。
这样就可以实现 dubbo 既是提供者又是消费者了。
相关推荐
ATenhong 2020-10-15
supperme 2020-09-08
doctorvian 2020-08-02
aNian 2020-08-01
kongjunlongaa 2020-06-29
Fightingxr 2020-06-26
whileinsist 2020-06-24
doctorvian 2020-06-16
XuNeely 2020-06-16
wangyangsoftware 2020-06-16
大步流星 2020-06-16
aNian 2020-06-16
gaoyongstone 2020-06-16
MartellJenkins 2020-06-11
范群松 2020-06-11
Fightingxr 2020-06-08
XuNeely 2020-06-07
大步流星 2020-06-05