// 创建一个与服务器的连接 需要(服务端的 ip+端口号)(session过期时间)(Watcher监听注册)
ZooKeeper zk = null;
try {
zk = new ZooKeeper("192.168.30.110:2181", 3000, new Watcher() {
public void process(WatchedEvent event) {
System.out.println("已经触发了" + event.getType() + "事件!");
}
});
} catch (IOException e) {
e.printStackTrace();
}
// 创建一个目录节点
/**
* CreateMode: PERSISTENT (持续的,相对于EPHEMERAL,不会随着client的断开而消失)
* PERSISTENT_SEQUENTIAL(持久的且带顺序的) EPHEMERAL (短暂的,生命周期依赖于client session)
* EPHEMERAL_SEQUENTIAL (短暂的,带顺序的)
*/
try {
zk.create("/testRootPath", "testRootData".getBytes(),
Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 创建一个子目录节点
try {
zk.create("/testRootPath/testChildPathOne",
"testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println(new String(zk.getData("/testRootPath", false,
null)));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 取出子目录节点列表
try {
System.out.println(zk.getChildren("/testRootPath", true));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 创建另外一个子目录节点
try {
zk.create("/testRootPath/testChildPathTwo",
"testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println(zk.getChildren("/testRootPath", true));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 修改子目录节点数据
try {
zk.setData("/testRootPath/testChildPathOne",
"hahahahaha".getBytes(), -1);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
byte[] datas = null;
try {
datas = zk.getData("/testRootPath/testChildPathOne", true, null);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
String str = null;
try {
str = new String(datas, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(str);
// 删除整个子目录 -1代表version版本号,-1是删除所有版本
try {
zk.delete("/testRootPath/testChildPathOne", -1);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (KeeperException e) {
e.printStackTrace();
}
try {
System.out.println(zk.getChildren("/testRootPath", true));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(str);