首先 有应用A 是 提供者
应用B 来实现既是消费者又是提供者
在应用 B 这边新建两个xml
dubbo-consumer.xml 消费者
<dubbo:annotation package="test.dubbo.*" /> <dubbo:application name="person-client" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:protocol name="dubbo" port="20881" />
<dubbo:reference id="personInfoService" interface="test.dubbo.itf.IpersonInfoService" timeout="10000" check="false" />
dubbo-provider.xml 提供者
<dubbo:annotation package="test.dubbo.*" /> <dubbo:application name="person-center" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="test.dubbo.itf.IpersonInfoService" protocol="dubbo" ref="personInfoService" />
启动之后会报错: Duplicate application configs:
重复的应用程序的配置
解决办法是把其中一个xml中的配置文件删除,留一个就好了
比如删除 dubbo-provider.xml 里面的
<dubbo:annotation package="test.dubbo.*" /> <dubbo:application name="person-center" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol name="dubbo" port="20880" />
修改后的 xml文件
dubbo-consumer.xml 消费者
<dubbo:annotation package="test.dubbo.*" /> <dubbo:application name="person-client" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol name="dubbo" port="20881" /> <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 既是提供者又是消费者了。