• ZKClient操作zookeeper


      前面简单研究了curator的使用,下面简单研究zkclient的使用。

    1.创建连接

        private static final String CONNECT_ADDR = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183";
    
        private static ZkClient geneClient() {
            return new ZkClient(new ZkConnection(CONNECT_ADDR), 10000);
        }

    创建客户端的方法: ZKClient(Arguments)
    参数1:zkServer zookeeper服务器的地址,用","分割
    参数2:sessionTimeout超时回话,为毫秒,默认是30000ms
    参数3:connectionTimeOut 连接超时会话
    参数4:IZKConnection接口的实现类
    参数5:zkSerializer 兹定于序列化实现

    2.简单操作

    1.创建节点

      可以递归创建节点,只不过递归创建的节点值为空。

            // 创建节点
            geneClient.create("/test1", "sssss", CreateMode.PERSISTENT);
            // 递归创建节点,只是节点的值为空
            geneClient.createPersistent("/test2/t22", true);

    结果

     创建方法如下:

     2.删除节点

      可以递归删除节点。

            boolean delete = geneClient.delete("/test1");
            // 递归删除
            boolean deleteRecursive = geneClient.deleteRecursive("/test2");

     3.获取节点内容和遍历子节点

            Object readData = geneClient.readData("/test1");
            System.out.println(readData);
    
            List<String> list = geneClient.getChildren("/test2");
            for (String p : list) {
                System.out.println(p);
                String rp = "/test2/" + p;
                String data = geneClient.readData(rp);
                System.out.println("节点为:" + rp + ",内容为: " + data);
            }

     4.判断节点是否存在

        boolean exists = geneClient.exists("/test1");
        System.out.println(exists);

    5.修改节点

            Stat writeData = geneClient.writeData("/test1", "cccc");
            System.out.println(writeData);
            System.out.println(geneClient.readData("/test1"));

    3.监听节点

    1.监听节点变化

            geneClient.subscribeDataChanges("/test1", new IZkDataListener() {
    
                @Override
                public void handleDataDeleted(String dataPath) throws Exception {
                    System.out.println("节点被删除");
                }
    
                @Override
                public void handleDataChange(String dataPath, Object data) throws Exception {
                    System.out.println(dataPath + "	" + data);
                }
            });

    2.监听子节点变化(只能监听字节点,子孙节点无效)

            geneClient.subscribeChildChanges("/test1", new IZkChildListener() {
                @Override
                public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
                    System.out.println(parentPath+"	");
                    for(String s:currentChilds){
                        System.out.println(s);
                    }
                }
            });
  • 相关阅读:
    golang之panic,recover,defer
    Golang之函数练习
    Golang之strings包
    Golang之字符串操作(反转中英文字符串)
    keil中使用——变参数宏__VA_ARGS__
    到底该不该用RTOS——rtos的优点
    c语言联合union的使用用途
    c语言的#和##的用法
    c语言位域的使用注意事项——数据溢出
    基于 Keil MDK 移植 RT-Thread Nano
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/10545166.html
Copyright © 2020-2023  润新知