Zookeeper之ZKClient的使用

maven依赖

<dependency>  
    <groupId>com.101tec</groupId>  
    <artifactId>zkclient</artifactId>  
    <version>0.4</version>  
</dependency>

测试demo

public class ZooUtil {
    
    
    
     public static void main(String[] args) {
         List<String> ll = new ArrayList<String>();
         ZkClient zkClient = new ZkClient("172.16.10.107:2181",3000,3000,new SerializableSerializer());
//           zkClient.createEphemeral("/worker1");     //创建临时节点,回话超时会删除
         /**
          * 获取子目录下的数据
          */
         List<String> l = zkClient.getChildren("/");
         for(String s : l)
         {
             System.out.println(s);
         }
         /**
          * 创建节点
          */
         zkClient.createPersistent("/test1");
         /**
          * 创建子节点
          */
         zkClient.createPersistent("/test1/test",true);
         /**
          * 创建并设置节点的值
          */
         zkClient.createPersistent("/test1","aaaa");
         /**
          * 写数据,即更新数据,会update,不会append
          */
         zkClient.writeData("/test1","hello");
         /**
          * 写一个对象,要序列化
          */
         User user = new User();
         user.setId(1);
         user.setName("bbbb");
         zkClient.create("/test1",user, CreateMode.PERSISTENT);
         /**
          * 删除节点
          */
         zkClient.delete("/test1");
         /**
          * 递归删除节点和其子节点
          */
         zkClient.deleteRecursive("/test1");

         /**
          * 读取数据对象
          */
         Stat stat = new Stat();
         User u = zkClient.readData("/test1",stat);
         System.out.println(u.getName());
         /**
          * 读取简单类型数据
          */
         String s = zkClient.readData("/test1");
         System.out.println(s);

         /**
          * 判断节点是否存在
          */
         boolean b = zkClient.exists("/test1");

         /**
          * 监听节点的变化,节点增加,删除,减少
          */
         zkClient.subscribeChildChanges("/test1", new IZkChildListener() {
             @Override
             public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
                 System.out.println("parentPath = " + parentPath);

             }
         });
         /**
          * 监听节点数据的变化,子节点数据变化不会监听到
          */
         zkClient.subscribeDataChanges("/test1", new IZkDataListener() {
             //数据变化时触发
             @Override
             public void handleDataChange(String dataPath, Object data) throws Exception {

             }

             //节点删除时触发
             @Override
             public void handleDataDeleted(String dataPath) throws Exception {

             }
         });
     }

}

 

posted @ 2017-04-27 09:41  浅夏丶未央  阅读(2333)  评论(0编辑  收藏  举报