zoukankan      html  css  js  c++  java
  • 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 {
    
                 }
             });
         }
    
    }
  • 相关阅读:
    POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)
    UVaLive 5031 Graph and Queries (Treap)
    Uva 11996 Jewel Magic (Splay)
    HYSBZ
    POJ 3580 SuperMemo (Splay 区间更新、翻转、循环右移,插入,删除,查询)
    HDU 1890 Robotic Sort (Splay 区间翻转)
    【转】ACM中java的使用
    HDU 4267 A Simple Problem with Integers (树状数组)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4417 Super Mario (树状数组/线段树)
  • 原文地址:https://www.cnblogs.com/xiaosiyuan/p/6772630.html
Copyright © 2011-2022 走看看