在本地配好provider和consumer后,启动服务把service注册到zookeeper集群,运行时得到如下错误
图中192.168.170.220是我本地IP,这说明它在本地找service,但是查看dubbo的监控界面,注册的service是有的,这是因为我的调用方式造成的,一般的service在一个项目启动后,再在其他项目声明consumer调用,而我的是service和consumer在一个项目中,代码如下:
<dubbo:application name="provider_shop_service" owner="sunzj"/>
<dubbo:monitor protocol="registry" />
<dubbo:registry address="${zookeeper.path}" />
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:service interface="com.plocc.shop.service.ShopSupportService" ref="shopSupportServiceImpl"/>
以上是provider配置
以下是consumer配置
<dubbo:consumer check="false" />
<dubbo:reference id="shopSupportService" interface="com.plocc.shop.service.ShopSupportService" />
这样本地启动后,本地也存在ShopSupportService,所以它会先在本地找,而本地又没有zookeeper集群,就报错了。
解决方法:本地启动后,再把上面红线标记的代码注释掉就可以了,它就回去zookeeper集群上找。