概述
使用最新的1.2.x版本的nacos-server做注册中心时,按照nacos官网上说明加入了下面的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
但是应用启动时打印除了“NacosServiceRegistry : No service to register for nacos client”的提示信息,在nacos-server页面也看不到对应的注册实例,调试代码发现错误出错:
/**
**NacosServiceRegistry类
**/
public void register(Registration registration) {
if (StringUtils.isEmpty(registration.getServiceId())) {
log.warn("No service to register for nacos client...");
return;
}
String serviceId = registration.getServiceId();
Instance instance = getNacosInstanceFromRegistration(registration);
try {
namingService.registerInstance(serviceId, instance);
log.info("nacos registry, {} {}:{} register finished", serviceId,
instance.getIp(), instance.getPort());
}
catch (Exception e) {
log.error("nacos registry, {} register failed...{},", serviceId,
registration.toString(), e);
}
}
通过上面的代码知道有个serviceId的属性没有配置,具体配置在NacosRegistration(Registration 接口的实现类)配置类里面,看下NacosRegistration类的getServiceId方法
public String getServiceId() { //查询的nacosDiscoveryProperties的service属性 return nacosDiscoveryProperties.getService(); }
最终配置来自于NacosDiscoveryProperties这个类,跟nacos注册相关的一些属性在该配置类里面:
@Value("${spring.cloud.nacos.discovery.service:${spring.application.name:}}")
private String service;
通过上面的代码我们可以知道,service默认取得是spring.application.name配置的值,前提是spring.application.name这个属性已经配置了,笔者的应用之所以没有注册到nacos-server原因在于在配置spring.application.name缩进出了问题,调整后就可以了,下面给出示例配置:
server:
port: 9000
management:
endpoints:
web:
exposure:
include: '*'
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: public
出问题时的配置如下:
server:
port: 9000
management:
endpoints:
web:
exposure:
include: '*'
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: public
name与application层级出现了问题。
最后
以上就是动听寒风为你收集整理的NacosServiceRegistry : No service to register for nacos client的全部内容,希望文章能够帮你解决NacosServiceRegistry : No service to register for nacos client所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复