zookeeper+zKClient客户端的API使用

zookeeper+zKClient客户端的API使用,第1张

zookeeper+zKClient客户端的API使用 简介:

zkClient是一个开源的zookeeper客户端,内部针对zookeeper原生API进行了封装,让 *** 作zookeeper更加的简单;同时zkClient内部还实现了诸如:Session超时重连;Warcher反复注册机制;

导入依赖:
     
        
            com.101tec
            zkclient
            0.2
        
常用 *** 作:
package com.example.liunx_demo.zookeeper.zkclient;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;


public class test {

    public static void main(String[] args) {

        
        ZkClient zkClient = new ZkClient("192.168.10.80:2181");
        System.err.println("会话创建成功");

        //==========================1:创建节点,同时递归创建子节点===========================================
        
        zkClient.createPersistent("/zkclient-data01/01-c2", true);
        System.err.println("节点递归创建完成");

        //===========================2:删除节点==========================================
        
//        zkClient.deleteRecursive("/zkclient-data01");
//        System.err.println("递归删除完成");

        //===========================3:获取某节点的子节点列表==========================================
        
        List children = zkClient.getChildren("/zkclient-data01");
        System.err.println(children);

        
        zkClient.subscribeChildChanges("/zkclient-data01", new IZkChildListener() {
            
            @Override
            public void handleChildChange(String s, List list) throws Exception {
                System.err.println("s" + "的子节点列表发生了变化,变化后的子节点列表为:" + list);
            }
        });

        //============================5:判断节点是否存在=========================================
        
        boolean exists = zkClient.exists("/zkclient-data01");

        //============================6:创建节点,并给节点赋值=========================================
        
        zkClient.createPersistent("/zkclient-data02", "12345");

        //============================6:读取节点内容=========================================
        
        zkClient.readData("/zkclient-data02");

        
        zkClient.subscribeDataChanges("/zkclient-data01", new IZkDataListener() {
            
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.err.println(s + "该节点内容被更新,更新后的内容:" + o);
            }

            
            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.err.println(s + "该节点内容被删除");
            }
    });
}
}

封装的工具类
package com.zk.zkclient;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;


public class ZkClientUtils {

    private static ZkClient zkClient;

    private static final String address = "192.168.73.131:2191,192.168.73.131:2192,192.168.73.131:2193";

    static {
         
        zkClient = new ZkClient(address, 30000, 50000);

    }


    
    public static void createPersistent(String path) {
        zkClient.createPersistent(path, true);
    }

    
    public static void createPersistent(String path, String data) {
        zkClient.createPersistent(path, data);
    }

    
    public static void createPersistentSequential(String path, String data) {
        zkClient.createPersistentSequential(path, data);
    }


    
    public static void createEphemeral(String path) {
        zkClient.createEphemeral(path);
    }

    
    public static void createEphemeral(String path, String data) {
        zkClient.createEphemeral(path, data);
    }

    
    public static void createEphemeralSequential(String path, String data) {
        zkClient.createEphemeralSequential(path, data);
    }

    
    public static void delete(String path) {
        zkClient.delete(path);
    }

    
    public static void deleteRecursive(String path) {
        zkClient.deleteRecursive(path);
    }
    
        
    public static void updataNode(String path,String data) throws Exception {

        zkClient.writeData(path,data);
    }

    
    public static List getNodes(String path) {
        List nodes = zkClient.getChildren(path);
        return nodes;
    }

    
    public static void addNodeListener(String path, IZkChildListener childListener) {
        zkClient.subscribeChildChanges(path,childListener);
    }

    
    public static void addContentListener(String path, IZkDataListener dataListener) {
        zkClient.subscribeDataChanges(path,dataListener);
    }


    
    public static boolean exists(String path) {

        return zkClient.exists(path);
    }

    
    public static String readNode(String path) {
        Object o = zkClient.readData(path);
        return (String) o;
    }


}

测试调用工具类:
package com.zk.zkclient;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;


public class Test {
    public static void main(String[] args) throws InterruptedException {


        List nodes = ZkClientUtils.getNodes("/test-javaapi");

        // 给此节点注册子节点列表变更事件,当子节点列表发生变更时触发
        ZkClientUtils.addNodeListener("/test-javaapi", new IZkChildListener() {
            @Override
            public void handleChildChange(String s, List list) throws Exception {
                System.err.println(s + "节点的子节点列表变更为:" + list);
            }
        });

        // 删除节点--非递归删除
//        ZkClientUtils.delete("/test-javaapi/c1");

        // 创建持久节点--递归创建
        ZkClientUtils.createPersistent("/test-javaapi/c1");

        Thread.sleep(5000);

//        ZkClientUtils.delete("/test-javaapi/c2");

        ZkClientUtils.createPersistent("/test-javaapi/c2");

        Thread.sleep(5000);
//        ZkClientUtils.delete("/test-javaapi/c3");

        ZkClientUtils.createPersistent("/test-javaapi/c3");

        System.err.println(nodes);

        Thread.sleep(Integer.MAX_VALUE);
    }

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5688122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存