【最详细】dubbo启动消费者报错:No provider available for the service

java.lang.IllegalStateException: Failed to check the status of the service com.pinyougou.sellergoods.service.SellerService. No provider available for the service com.pinyougou.sellergoods.service.SellerService from the url zookeeper://192.168.3.154:2181/c

这个错误也是比较让人头疼的,由于对dubbo底层不是很了解,所以一直难以找到根本原因,在网上找了很多文章,解决方案有以下三种。

1、就是我们在运行的时候,消费者和提供者执行的先后顺序有问题导致的错误,比如我们执行消费者的时候,就要把所有消费者需要用到的提供者先启动起来,再运行消费者。如果不先运行提供者的话就会报这样的错误

2、

  • 修改Dubbo服务端spring配置文件中dubbo发布信息:

  • <dubbo:protocol name="dubbo" port="20880" host="同上主机IP地址"/>

  • 在Dubbo消费端spring配置文件dubbo消费信息中,添加如下一行:

  • <dubbo:protocol host="同上主机IP地址"/>

3、

Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。

如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到null引用,如果check=false,总是会返回引用,当服务恢复时,能自动连上。

可以通过check="false"关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。

1、关闭某个服务的启动时检查:(没有提供者时报错)
<dubbo:reference interface="com.foo.BarService" check="false" />

2、关闭所有服务的启动时检查:(没有提供者时报错)  写在定义服务消费者一方
<dubbo:consumer check="false" />

3、关闭注册中心启动时检查:(注册订阅失败时报错)
<dubbo:registry check="false" /> 

即在我上面的代码截图中 后面加上 check=“false”,图中是我已经加过了

以上三种解决方案,是可以彻底解决问题的,至于具体原因,文章中我也写到,大家可以深入研究,希望可以帮到大家。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值