Nacos 的监听查询用来查看有哪些 Nacos 客户端正在监听配置集,下面示例通过 ConfigService 类的 addListener() 方法添加一个监听器,监听指定的配置集。当配置集发生变化时,Nacos 服务会自动发送变更通知到客户端。
代码如下:
package com.hxstrive.nacos;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import java.util.Properties;
import java.util.concurrent.Executor;
/**
* Nacos SDK 简单DEMO
* @author hxstrive.com
*/
public class SimpleDemo {
public static void main(String[] args) throws NacosException {
// Nacos 地址
String serverAddr = "127.0.0.1:8848";
// Data ID
String dataId = "my_config";
// Group
String group = "DEFAULT_GROUP";
Properties config = new Properties();
config.put("serverAddr", serverAddr);
// 关键代码,指定为 dev 命名空间
config.put("namespace", "8719efd1-94a6-49f7-9846-2debd66f6c0f");
// 如果 Nacos 开启了登录权限,则指定用户名和密码
// 如果没有开启登录权限,则注释掉下面两行代码
config.put("username", "nacos");
config.put("password", "nacos");
ConfigService configService = NacosFactory.createConfigService(config);
// 添加监听器【关键代码】
configService.addListener(dataId, group, new Listener() {
public Executor getExecutor() {
return null;
}
public void receiveConfigInfo(String configInfo) {
// 接收配置变更通知
System.out.println(configInfo);
}
});
// String getConfig(String dataId, String group, long timeoutMs) throws NacosException;
// timeoutMs 为获取配置超时时间,单位毫秒
String content = configService.getConfig(dataId, group, 5000);
System.out.println(content);
// 注意:这里写一个简单循环,是为了避免程序执行完后立即结束
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}运行示例,输出如下:
version=2.2.3 name=nacos
此时,进入到 Nacos 的 “监听查询” 页面,根据 Data ID 和 Group 条件进行过滤,如下图:

上图中,显示只有一个客户端在监听 dev 命名空间中的 my_config 配置集。
最后,我们尝试着去修改一下 dev 命名空间中名为 my_config 的配置集,示例输出如下:
version=2.2.3 name=nacos version=2.2.3 name=nacos_update
上面输出中,最后两行均是更新后的最新配置内容。