首先 有應用A 是 提供者
應用B 來實現既是消費者又是提供者
在應用 B 這邊新建兩個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實現 --> <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 既是提供者又是消費者了。