手动新建配置用于测试

输入一些配置内容:
k1=v1 spring.datasource.username=ken spring.datasource.password=123456
点击发布:

查看,点击【示例代码】,查看java示例代码:


curl方式访问配置
curl -x get "http://223.2.35.53:8848/nacos/v1/cs/configs?dataid=test&group=default_group"
可以获得前面在nacos中配置的内容。说明服务端的接口没问题。

工程示例:获取nacos配置
新建一个maven工程。
增加nacos客户端依赖
在pom.xml中添加:
<dependency>
<groupid>com.alibaba.nacos</groupid>
<artifactid>nacos-client</artifactid>
<version>2.1.1</version>
</dependency>获取配置的java代码
基于上面的示例代码,只是简化了:
import com.alibaba.nacos.api.nacosfactory;
import com.alibaba.nacos.api.config.configservice;
import com.alibaba.nacos.api.propertykeyconst;
import java.util.properties;
public class main {
public static void main(string[] args) throws exception {
string serveraddr = "localhost:8848";
string dataid = "test";
string group = "default_group";
properties properties = new properties();
properties.put(propertykeyconst.server_addr, serveraddr);
configservice configservice = nacosfactory.createconfigservice(properties);
string content = configservice.getconfig(dataid, group, 2000);
system.out.println("sdk result: '\n" + content + "'");
}
}直接运行,报错缺少org.slf4j.loggerfactory。
修改pom.xml引入slf4j
通过增加springboot相关,间接引入日志:
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0</modelversion>
<groupid>org.example</groupid>
<artifactid>test-java</artifactid>
<version>1.0-snapshot</version>
<parent>
<artifactid>spring-boot-parent</artifactid>
<groupid>org.springframework.boot</groupid>
<version>2.6.5</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<dependency>
<groupid>com.alibaba.nacos</groupid>
<artifactid>nacos-client</artifactid>
<version>2.1.1</version>
</dependency>
</dependencies>
</project>获取的nacos配置信息为null
方案1
引入的nacos的jar包版本是2.1.1,但是运行上面代码,获取nacos配置信息为null,即的content为null。
解决方法即降低jar包版本为1.4.4。
方案2
docker创建容器时多映射两个端口:
-p 9848:9848 \ # 关键:暴露 grpc 端口 -p 9849:9849 \ # 关键:暴露 grpc 服务端端口

这样可以用 nacos 2.x 的新特性(如配置监听、长连接优势)。
成功获取配置信息
运行java代码,成功获取nacos的配置信息:

工程示例:监听nacos配置的变化
在前面工程的基础上,修改java代码:
import com.alibaba.nacos.api.nacosfactory;
import com.alibaba.nacos.api.config.configservice;
import com.alibaba.nacos.api.propertykeyconst;
import com.alibaba.nacos.api.config.listener.listener;
import java.util.properties;
import java.util.concurrent.executor;
public class main {
public static void main(string[] args) throws exception {
string serveraddr = "localhost:8848";
string dataid = "test";
string group = "default_group";
properties properties = new properties();
properties.put(propertykeyconst.server_addr, serveraddr);
configservice configservice = nacosfactory.createconfigservice(properties);
string content = configservice.getconfig(dataid, group, 2000);
system.out.println("sdk result: '\n" + content + "'");
//监听配置变化
configservice.addlistener(dataid, group, new listener() {
@override
public executor getexecutor() {
return null;
}
@override
public void receiveconfiginfo(string s) {
system.out.println("receiveconfiginfo");
system.out.println(s);
}
});
system.in.read();//避免程序结束
}
}然后修改nacos服务端上的配置信息,重新发布。
客户端监听到配置信息变化后,自动将其打印。
以上就是java sdk获取和监听nacos配置信息的方法的详细内容,更多关于java sdk获取监听nacos配置信息的资料请关注代码网其它相关文章!
发表评论