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
上面输出中,最后两行均是更新后的最新配置内容。