org.apache.dubbo.rpc.RpcException: Fail to start server 和 No provider available for the service 的解决

本文详细解析了Dubbo中常见的两个异常:RpcException: Fail to start server 和 No provider available for the service 的出现原因及解决办法。针对jar包冲突和端口冲突等问题提供了具体的解决方案,并深入分析了服务注册时内外网IP不一致导致的问题。

org.apache.dubbo.rpc.RpcException: Fail to start server 和 No provider available for the service 的解决方法

出现问题的原因有两种

1.端口冲突
2.jar包冲突

先来说一下jar包冲突吧

这是我遇到的问题,天坑!!!

Caused by: java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
                at io.netty.channel.SingleThreadEventLoop.<init>(SingleThreadEventLoop.java:65)
                at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:141)
                at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:183)
                at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:38)
                at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
                at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
                at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
                at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
                at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:87)
                at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:82)
                at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:69)

解决方法为:

将dubbo 中的netty依赖排除掉

   <dependency>
           <groupId>org.apache.dubbo</groupId>
           <artifactId>dubbo-spring-boot-starter</artifactId>
           <version>2.7.6</version>
           <exclusions>
               <exclusion>
                   <groupId>io.netty</groupId>
                   <artifactId>netty-all</artifactId>
               </exclusion>
           </exclusions>
       </dependency>

原因

dubbo 和 zokeeper 中的netty版本不一致

SingleThreadEventExecutor.<init>

导致方法的构造函数参数不匹配所以出现了异常

  Caused by: java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V

端口冲突的问题

错误信息为

 Caused by: java.net.BindException: Address already in use

解决方法

ubuntu->
第一步 lsof -i:20867(20867请换为你的服务端口)
请添加图片描述
第二步 kill 17333886 (17333886 请换为你的服务PID)

@@@@@@@@@@@@@@@

最后说一下这个坑 !!

No provider available for the service

这真的是个天坑 caocaocao,原本在本地运行好好的提供商,但是发布到了服务器就不行了,弄了老半天是因为,dubbo发布的服务网站为内网网址。

原因

因为dubbo注册到zookeeper的服务ip为内网ip而不是公网ip

解决方法

第一步 输入 hostname请添加图片描述
第二步 输入 vim /etc/hosts请添加图片描述
修改最后行127.0.1.1 请添加图片描述修改后请添加图片描述

完成请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值