<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.5.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.5.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.0.0-BETA</version>
</dependency>
以下方案临时解决,会有更好的方案,没理解出错问题所在,所以不是最好解决方案
nacos-client源码进行改造
类 NamingGrpcClientProxy
方法
private <T extends Response> T requestToServer(AbstractNamingRequest request, Class<T> responseClass) throws NacosException { try { request.putAllHeader(this.getSecurityHeaders()); request.putAllHeader(this.getSpasHeaders(NamingUtils.getGroupedNameOptional(request.getServiceName(), request.getGroupName()))); Thread.sleep(5000L); Response response = this.requestTimeout < 0L ? this.rpcClient.request(request) : this.rpcClient.request(request, this.requestTimeout); if (ResponseCode.SUCCESS.getCode() != response.getResultCode()) { throw new NacosException(response.getErrorCode(), response.getMessage()); } if (responseClass.isAssignableFrom(response.getClass())) { return response; } LogUtils.NAMING_LOGGER.error("Server return unexpected response '{}', expected response should be '{}'", response.getClass().getName(), responseClass.getName()); } catch (Exception var4) { throw new NacosException(500, "Request nacos server failed: ", var4); } throw new NacosException(500, "Server return invalid response"); }
加入以下代码
Thread.sleep(5000); //加入这个就可以重新连接,很奇怪
联系qq:158430397 需要改造后的包可以找我,有更好的解决方案可以找我,本文只做参考,对不同环境需要测试