辛辛苦苦搞了好久的服务启动失败,访问找的资料帮助不是很大。最终求助了大佬,终于把问题解决了。
dubbo消费端启动的时候报如下的错误
Caused by: java.lang.IllegalStateException: Failed to check the status of the service com.remote.api.EmailApi. No provider available for the service com.remote.api.EmailApi from the url spring-cloud://127.0.0.1:9090/org.apache.dubbo.registry.RegistryService?application=petal-pay-login&dubbo=2.0.2&interface=com.remote.api.EmailApi&lazy=false&methods=sendEmail&pid=26648&qos.enable=false®ister.ip=192.168.44.1&release=2.7.3&side=consumer&sticky=false×tamp=1638193311668 to the consumer 192.168.44.1 use dubbo version 2.7.3
at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:418) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:329) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:250) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceBeanInvocationHandler.init(ReferenceAnnotationBeanPostProcessor.java:269) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceBeanInvocationHandler.access$100(ReferenceAnnotationBeanPostProcessor.java:242) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildInvocationHandler(ReferenceAnnotationBeanPostProcessor.java:236) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildProxy(ReferenceAnnotationBeanPostProcessor.java:219) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:134) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor.getInjectedObject(AnnotationInjectedBeanPostProcessor.java:360) ~[dubbo-2.7.3.jar:2.7.3]
at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor$AnnotatedFieldElement.inject(AnnotationInjectedBeanPostProcessor.java:540) ~[dubbo-2.7.3.jar:2.7.3]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor.postProcessPropertyValues(AnnotationInjectedBeanPostProcessor.java:147) ~[dubbo-2.7.3.jar:2.7.3]
... 22 common frames omitted
找了好久看到有文章指出有两种解决方案
(1)需要统一消费端和服务端的版本
第一种我没试验过。在这我才用的是第二种
(2)关闭dubbo的版本检查
dubbo:
scan:
# dubbo 服务扫描基准包
base-packages: com.pay
protocol:
# dubbo 协议
name: dubbo
# dubbo 协议端⼝( -1 表示⾃增端⼝,从 20880 开始)
port: -1
registry:
# 挂载到 Spring Cloud 的注册中⼼
address: spring-cloud://127.0.0.1
consumer: #关闭消费端的版本检查
check: false
如此后台报错完美解决。
每个人遇到的错误可能都不太一样,此方案只作为参考