package org.huqi.demo; import java.io.IOException; import java.util.List; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; import org.apache.zookeeper.ZooDefs.Ids; public class Demo { private static ZooKeeper zookeeper=null; public static void main(String[] args) throws Exception { zookeeper=new ZooKeeper("localhost:2181", 2000, new Watcher() { @Override public void process(WatchedEvent event) { try { getNode(); } catch (KeeperException | InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); //deleteNode(); //createNode(); //isExtistNode(); //getNode(); Thread.sleep(Long.MAX_VALUE); } /*** * 获取节点的权限 * @throws InterruptedException * @throws KeeperException * * */ public static void getNode() throws KeeperException, InterruptedException { //path 节点路径 //watch 是否监听 List<String> nodes=zookeeper.getChildren("/", true); System.out.println("----------------------------"); for(String ns:nodes) { System.out.println(ns); } System.out.println("----------------------------"); } /** * 创建节点 * @throws InterruptedException * @throws KeeperException * */ public static void createNode() throws KeeperException, InterruptedException { /** * Ids.OPEN_ACL_UNSAFE 开放的节点 * CREATOR_ALL_ACL 可以创建的权限 * READ_ACL_UNSAFE 只读的权限 * CreateMode.PERSISTENT_SEQUENTIAL 带序号的不担心节点重名 * EPHEMERAL 短暂的节点 * PERSISTENT 永久的 节点 * */ String path=zookeeper.create("/huqi2000", "huqi11".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); System.out.println(path); } /** * 删除节点 * */ public static void deleteNode() throws InterruptedException, KeeperException { zookeeper.delete("/huqi211", 0); } /** * 判断节点是否存在,并且不监听 * @throws InterruptedException * @throws KeeperException * */ public static void isExtistNode() throws KeeperException, InterruptedException { Stat path=zookeeper.exists("/huqi211", false); System.out.println(path); System.out.println(path.getAversion()); System.out.println(path.getCtime()); } }