目录
1、创建连接
ZkClient zkc = new ZkClient("127.0.0.1:2181", 10000);
2、节点操作
//1. 创建临时节点
zkc.createEphemeral("/temple");
//创建持久节点,父节点不存在,创建父节点
zkc.createPersistent("/admin/c1", true);
//删除节点
zkc.delete("/temple");
//删除节点和子节点
zkc.deleteRecursive("/admin");
//2. 获取子节点的内容
zkc.createPersistent("/admin", "1");
zkc.createPersistent("/admin/c1", "3");
zkc.createPersistent("/admin/c2", "2");
List<String> list = zkc.getChildren("/admin");
for(String p : list){
System.out.println(p);
String rp = "/admin/" + p;
String data = zkc.readData(rp);
System.out.println("节点为:" + rp + ",内容为: " + data);
}
//3. 更新和判断节点是否存在
zkc.writeData("/admin/c1", "新内容");
System.out.println(zkc.readData("/admin/c1").toString());
System.out.println(zkc.exists("/admin/c1"));
//4.递归删除/admin内容
zkc.deleteRecursive("/admin");
3、监听节点的变化
3.1 监听当前节点IZkDataListener
zkc.subscribeDataChanges("/admin", new IZkDataListener() {
@Override
public void handleDataDeleted(String path) throws Exception {
System.out.println("删除的节点为:" + path);
}
@Override
public void handleDataChange(String path, Object data) throws Exception {
System.out.println("变更的节点为:" + path + ", 变更内容为:" + data);
}
});
3.2 监听子节点IZkChildListener
//对父节点添加监听子节点变化。
zkc.subscribeChildChanges("/super", new IZkChildListener() {
@Override
public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
System.out.println("parentPath: " + parentPath);
System.out.println("currentChilds: " + currentChilds);
}
});