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 {
    
                 }
             });
         }
    
    }
  • 相关阅读:
    Discuz!X/数据库操作方法
    使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
    ECShop模板原理
    ecshop中smarty最常用的6大基本语法
    Laravel学习笔记
    Laravel的目录结构分析
    Intellij Idea 常用快捷键
    Code optimization and organization in Javascript / jQuery
    Bossies 2015: The Best of Open Source Software Awards
    解决jetty runner锁定js
  • 原文地址:https://www.cnblogs.com/xiaosiyuan/p/6772630.html
Copyright © 2011-2022 走看看