springboot无法获取nacos中配置文件bug记录

项目使用版本

<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
<spring.cloud.alibaba.version>2.2.9.RELEASE</spring.cloud.alibaba.version>

连接同事启动的nacos获取配置文件 一直获取不到 ,

经排查发现同事启动的nacos版本是1.4.1,而我这边内部依赖的nacos-client是2.1.0

通过跟踪代码发现nacos-client-2.1.0实际请求配置的端口是9848(刚开始的时候日志中并不打印连接不到9848的错误信息  当我把版本改成1.4.1再改成2.1.0后 日志中明显打印了连接不到9848的错误日志,若早些有此日志我也不能被这个问题困了一个上午)

因为nacos版本2.x的版本会启动两个端口一个8848一个9848 

而nacos版本1.4.1的只会启动一个端口8848

所以nacos-client-2.x和nacos-1.4.1的获取配置的代码逻辑完全不同,并不能通用

若nacos的版本为1.x那么nacos-client的版本也选择1.x

若为2.x,那么nacos-client也选择2.x  一定要对应

同时若使用docker启动nacos2.x时若加了端口映射 也要添加两个  -p 8848:8848 -p 9848:9848 否则也获取不到配置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot应用程序手动获取Nacos配置,可以使用Nacos提供的Java客户端SDK。以下是获取Nacos配置的基本步骤: 1. 添加Nacos客户端SDK依赖 在pom.xml文件添加以下依赖: ``` <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.client.version}</version> </dependency> ``` 其`${nacos.client.version}`为Nacos客户端SDK的版本号。 2. 创建Nacos配置客户端 在Spring Boot应用程序创建Nacos配置客户端,可以使用`NacosConfigService`类来实现。在创建`NacosConfigService`实例时,需要传递Nacos Server的地址、命名空间、AccessKey和SecretKey等参数。 ```java import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosException; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class NacosConfig { @Value("${spring.cloud.nacos.config.server-addr}") private String serverAddr; @Value("${spring.cloud.nacos.config.namespace}") private String namespace; @Value("${spring.cloud.nacos.config.access-key:}") private String accessKey; @Value("${spring.cloud.nacos.config.secret-key:}") private String secretKey; @Bean public ConfigService nacosConfigService() throws NacosException { Properties properties = new Properties(); properties.put("serverAddr", serverAddr); properties.put("namespace", namespace); properties.put("accessKey", accessKey); properties.put("secretKey", secretKey); return NacosFactory.createConfigService(properties); } } ``` 在上面的示例,我们使用`@Value`注解来获取Nacos Server的地址、命名空间、AccessKey和SecretKey等参数。然后使用`NacosFactory.createConfigService(properties)`方法创建`ConfigService`实例。 3. 获取Nacos配置 在创建`ConfigService`实例后,就可以使用`ConfigService`提供的方法来获取Nacos配置了。例如,以下代码将从Nacos Server获取名为`example.properties`的配置文件: ```java import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ExampleController { @Autowired private ConfigService nacosConfigService; @GetMapping("/config") public String getConfig() throws NacosException { String dataId = "example.properties"; String group = "DEFAULT_GROUP"; String content = nacosConfigService.getConfig(dataId, group, 5000); return content; } } ``` 在上面的示例,我们使用`@Autowired`注解将`ConfigService`实例注入到`ExampleController`。然后,在`getConfig()`方法,使用`ConfigService.getConfig(dataId, group, timeout)`方法来获取Nacos Server名为`example.properties`的配置文件。其,`dataId`为配置文件的ID,`group`为配置文件的分组,`timeout`为获取配置的超时时间(单位为毫秒)。 这就是手动获取Nacos配置的基本步骤。当然,还有很多其他的高级用法,例如监听Nacos配置的变化等,可以根据具体的需求进行扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值