您的位置 首页 java

Java,Zookeeper,ZkClient,增删改查节点

ZkClient

a zookeeper client, that makes life a little easier.

地址:

相关的内容:

代码案例:

 <!-- zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.7.0</version>
</dependency>
<!-- com.101tec/zkclient -->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.11</version>
</dependency>  
 package com.what21.zookeeper.zkclient;

import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection;

/**
 * 创建会话
 */public class CreateSession {

    static final String CONNECT_ADDR = "192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181";
    static final int SESSION_TIMEOUT = 5000;

    public static void main(String[] args) {
        //  zkClient通过对zookeeperAPI内部包装,将这个异步的会话创建过程同步化了
        ZkConnection zkConnection = new ZkConnection(CONNECT_ADDR);
        ZkClient zkClient = new ZkClient(zkConnection, SESSION_TIMEOUT);
        System.out.println("会话被创建了....");
    }

}  
 package com.what21.zookeeper.zkclient;

import org.I0Itec.zkclient.ZkClient;

/**
 * 创建节点
 */public class CreateZNode {

    static final String CONNECT_ADDR = "192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181";

    public static void main(String[] args) {
        /*
        创建⼀个zkClient实例来进⾏连接
        注意:zkClient通过对zookeeperAPI内部包装,将这个异步的会话创建过程同步化了
        */        ZkClient zkClient = new ZkClient(CONNECT_ADDR);
        System.out.println("会话被创建了....");

        //createParents的值设置为true,可以递归创建节点
        zkClient.createPersistent("/xfd-zkClient/c1",true);
        System.out.println("success create znode.");
    }

}  
 package com.what21.zookeeper.zkclient;

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

import java.util.List;

/**
 * 获取节点
 */public class GetZnode {

    static final String CONNECT_ADDR = "192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181";

    public static void main(String[] args) throws InterruptedException {
        /*
        创建⼀个zkClient实例来进⾏连接
        注意:zkClient通过对zookeeperAPI内部包装,将这个异步的会话创建过程同步化了
        */        ZkClient zkClient = new ZkClient(CONNECT_ADDR);
        System.out.println("会话被创建了....");

        List<String> children = zkClient.getChildren("/xfd-zkClient");
        System.out.println(children);

        /**
         * 注册监听事件,客户端可以对不存在的节点进行子节点变更的监听
         * 只要该节点的子节点列表发生变化或该节点被创建、被删除,都会触发监听
         */        zkClient.subscribeChildChanges("/xfd-zkClient-get", new IZkChildListener() {
            /**
             * @param s parentPath
             * @param list 子节点列表
             * @throws Exception
             */            @Override
            public void handleChildChange(String s, List<String> list) throws Exception {
                System.out.println(s + " 's child changed, currentChilds:" + list);
            }
        });

        zkClient.createPersistent("/xfd-zkClient-get");
        Thread.sleep(1000);
        zkClient.createPersistent("/xfd-zkClient-get/c1");
        Thread.sleep(1000);
        zkClient.delete("/xfd-zkClient-get/c1");
        Thread.sleep(1000);
        zkClient.delete("/xfd-zkClient-get");
        Thread.sleep(Integer.MAX_VALUE);
    }

}  
 package com.what21.zookeeper.zkclient;

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

/**
 * 节点数据操作
 */public class ZnodeDataOperate {

    static final String CONNECT_ADDR = "192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181";

    public static void main(String[] args) throws InterruptedException {
        /*
        创建⼀个zkClient实例来进⾏连接
        注意:zkClient通过对zookeeperAPI内部包装,将这个异步的会话创建过程同步化了
        */        ZkClient zkClient = new ZkClient(CONNECT_ADDR);
        System.out.println("会话被创建了....");

        String path = "/xfd-zkClient-Ep";
        // 判断节点是否存在
        boolean exists = zkClient.exists(path);
        if (!exists) {
            // 创建临时节点
            zkClient.createEphemeral(path, "123");
        }
        // 注册监听
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            /**
             * d当节点数据内容发生改变时,执行的回调方法
             * @param s path
             * @param o 变化后的节点内容
             * @throws Exception
             */            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(path + "该节点内容被更新,更新后的内容" + o);
            }

            /**
             * 当节点被删除时会执行的回调方法
             * @param s path
             * @throws Exception
             */            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.out.println(s + " 该节点被删除");
            }
        });

        //获取节点内容
        Object o = zkClient.readData(path);
        System.out.println(o);
        //更新
        zkClient.writeData(path, "4567");
        Thread.sleep(1000);
        //删除
        zkClient.delete(path);
        Thread.sleep(1000);
    }

}
  
 package com.what21.zookeeper.zkclient;

import org.I0Itec.zkclient.ZkClient;

/**
 * 删除节点
 */public class DeleteZNode {

    static final String CONNECT_ADDR = "192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181";

    public static void main(String[] args) {
        /*
        创建⼀个zkClient实例来进⾏连接
        注意:zkClient通过对zookeeperAPI内部包装,将这个异步的会话创建过程同步化了
        */        ZkClient zkClient = new ZkClient(CONNECT_ADDR);
        System.out.println("会话被创建了....");

        // 在删除该节点时,会先删除其所有子节点再删除父节点(它自己),递归删除。此处删除了c1及c11
        String path = "/xfd-zkClient/c1";
        zkClient.createPersistent(path + "/c11");
        zkClient.deleteRecursive(path);
        System.out.println("success delete znode.");
    }

}  

文章来源:智云一二三科技

文章标题:Java,Zookeeper,ZkClient,增删改查节点

文章地址:https://www.zhihuclub.com/182923.shtml

关于作者: 智云科技

热门文章

网站地图