描述:预发布环境,服务消费者调用了一个服务,配置ok,但是该服务的提供者代码未更新,并未暴露该服务,即xml中并未配置该服务<dubbo:service .... />。
那么问题来了:为解决该问题,服务提供者要更新为最新代码重新发布,但是服务消费者需要重新启动,让其去zookeeper中重新注册获取吗?
好吧,实践证明,不用重启。dubbo官方文档上说记录:
服务消费者启动时
订阅/dubbo/com.foo.BarService/providers目录下的提供者URL地址。
并向/dubbo/com.foo.BarService/consumers目录下写入自己的URL地址。
dubbo是采用发布/订阅模式的,服务者启动只是添加订阅信息,当没有生产者时等同所有生产者宕机,此时“服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复”,事实证明,服务消费者只是该服务无法使用,其他服务正常。
ps:当然,如果在服务消费者启动过程中就要调用服务提供者,那么就会启动失败。