Closed baiguoz closed 1 year ago
重连次数是无限的,你截图的代码只是单次重连的重试次数, 单次连接失败出去之后, 会有一个异步线程一直检查并发起重连。
你可以用一个简单的方式测试,写个main方法,只使用nacos-client, 然后写一个无效地址,在main方法最后写while死循环。 你会发现logs/nacos/remote.log中一直在尝试重连。
这里说连接几次连不上退出,应该是你应用自己的问题。可能某个请求异常之后抛出异常导致了程序的退出。
作为配置中心的时候重连是无限次数的,作为注册中心,试了好久,都不行
最简单的,你用Ruoyi的gateway,去掉 spring-cloud-starter-alibaba-nacos-config ,只剩下注册中心 spring-cloud-starter-alibaba-nacos-discovery 就会自动退出了
我也遇到相同的问题,用docker去重启nacos和一个自己的服务,然后就一直注册不上去,一直报grpc connection is disconnect, skip current redo task
这是必现的问题,当服务先启动,它会尝试去重连nacos,然后过一会在去启动nacos,后面会重连上,但是在nacos上没有发现该服务注册上去。如果是正常启动nacos,然后再启动服务,这个时候服务正常注册上去,然后把nacos停掉,然后过会在重启nacos,这个时候服务是能重新注册上去的。
我自测没有问题, 客户端版本2.2.1 服务端版本2.2.1
客户端先启动,注册一个服务实例 报错not Starting, naming.log限制grpc connection is disconnect, skip current redo task
随后启动服务端,服务端启动完成2s后,客户端停止报错,控制台能查看到该服务实例。
测试直接使用的nacos-client,没有包gateway没有包spring boot。
同样 2.2.4 也测试了, 共测试了10次, 一次都没有复现。
如果使用
<!--注册中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.2.3</version>
</dependency>
1,nacos注册的核心方法是 requestToServer 如图,这里有个一个 rpcClientConfig.retryTimes() , 希望这里的startUpRetryTimes 可以配置,用户可以设置重连次数是最好的 重连3次根本不够用,在应用比nacos启动快的情况下,注册不上。
2,
如图,如果1连接不上,2这里根本不会走到redoForInstances方法和redoForSubscribes 方法 建议将下面判断去掉,因为如果注册上了,对应方法循环就是空的,就没有问题,如果注册信息变更了,重新注册也没有什么问题 if (!redoService.isConnected()) { LogUtils.NAMING_LOGGER.warn("Grpc Connection is disconnect, skip current redo task"); return; }