// 参数true表示开启子节点的监听
List<String> children = client.getChildren("/", true);
for (String child: children) {
System.out.println(child);
}
}
}
上面并不能实时监听节点的变化,即使我们在使用`getChildren`是开启了子节点的监听。这是因为两个原因:第一,程序执行完一次监听后就退出了。第二,监听器注册一次只能够监听一次(参考:[Zookeeper入门到精通05——Zookeeper客户端命令行操作](https://bbs.youkuaiyun.com/topics/618545628),小节:监听器原理)。如何才能够实时监听子节点,并且一有变化就输出呢?很简单,把上面的代码稍微修改下即可。
public class ZKClient {
ZooKeeper client;
@Before
public void init() throws IOException {
// 注意逗号后不要加空格,严格按照格式,在下面写自己对应得zookeeper服务集群得ip
String connectString="192.168.106.43:2182,192.168.106.44:2182,192.168.106.45:2182";
// String connectString=“192.168.106.43,192.168.106.44,192.168.106.45”;
int sessionTimeout = 20000;
client = new ZooKeeper(connect