问题描述:我们在整合Spring Cloud + Spring Cloud Alibaba + Spring Boot 开发,使用nacos作为服务的注册配置中心,同时整合spring-cloud-starter-dubbo做RPC旧接口调用。使用dubbo消费者启动报:
2021-04-18 17:58:56.500 ERROR 73780 --- [ main] .a.d.m.s.InMemoryWritableMetadataService : [DUBBO] publishProvider interfaceName is empty . providerUrl: consumer://10.3.25.142/com.alibaba.cloud.dubbo.service.DubboMetadataService?application=51dubbo_consumer&check=false&dubbo=2.0.2&generic=true&group=51stockhouse-dubbo_provider&interface=com.alibaba.cloud.dubbo.service.DubboMetadataService&pid=73780&qos.enable=false&release=2.7.6&side=consumer&sticky=false×tamp=1618739935954&version=1.0.0, dubbo version: 2.7.6, current host: 10.3.25.142
同时调用服务提供者也报同样的错误。
问题分析:Spring Cloud + Spring Cloud Alibaba + Spring Boot整合后版本兼容性。为了保证版本正常兼容,我们在Alibaba官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 找到了毕业版本的推荐关系
于是,我服务版本统一设定为:Spring Cloud Greenwich.SR6+ Spring Cloud Alibaba 2.1.2.RELEASE + Spring Boot 2.1.13.RELEASE,但启动后还是会报
[DUBBO] publishProvider interfaceName is empty .
解决方法:SpringCloud Greenwich版本过高!最终使用的版本组合为:Spring Cloud Greenwich.SR2+ Spring Cloud Alibaba 2.1.0.RELEASE + Spring Boot 2.1.13.RELEASE 由此看来,我们还是要遵循官方推荐版本组合,同时避免使用高版本!!!