zkClient操作

2017-05-26  本文已影响340人  先生_吕

zkClient在原生API的基础上进行了封装,简化了zookeeper的复杂性。

另外可以参照:http://www.cnblogs.com/shengkejava/p/5633801.html

创建客户端方法:ZKClient(Arguments)
参数1:zkServers,zookeeper服务器地址,用“,”分隔。
参数2:sessionTimeout,会话超时时间,单位毫秒,默认为30000ms。
参数3:connectionTimeout,连接超时时间。
参数4:IZkConnection接口的实现类。
参数5:zkSerializer,自定义序列化实现。

注意:出来添加zookeeper的包还有引入zkClient的包

【代码】

import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection;
import org.apache.zookeeper.CreateMode;

/**
 * 
 * @author lvfang
 * 
 * 
 *    zkClient在原生API的基础上进行了封装,简化了zookeeper的复杂性。
 *    不要开发者自己手动创建watcher
 * 
 */
public class ZkClientTest {

    // zookeeper地址
    static final String CONNECT_ARRD = "192.168.1.201:2181";
    // 超时时间
    static final int SESSION_OUTTIME = 5000;

    public static void main(String[] args) {

        ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ARRD),SESSION_OUTTIME);

        /**
         * 添加
         */
        zkClient.create("/testZkclient", "zkclient_Test", CreateMode.EPHEMERAL);
        zkClient.createPersistent("/testZkclient/aaa");// 持久化节点创建(递归创建)
        zkClient.createEphemeral("");// 临时节点创建

        /**
         * 删除
         */
        zkClient.delete("/testZkclient");// 删除节点
        zkClient.deleteRecursive("/testZkclient");// 递归删除

        /**
         * 修改节点数据
         */
        zkClient.writeData("/super/c1", "新内容"); // 修改指定节点的值 (写数据)
        System.out.println(zkClient.readData("/super/c1"));// 读数据

        /**
         * 是否存在
         */
        System.out.println(zkClient.exists("/super/c1")); // 判断指定节点是否存在

        
        /**
         * 设置path和data,并读取子节点和每个节点的内容  
         */
        zkClient.createPersistent("/super", "1234"); // 创建并设置节点的值
        zkClient.createPersistent("/super/c1", "内容一");
        zkClient.createPersistent("/super/c2", "内容二");
        List<String> children = zkClient.getChildren("/super");
        for (String child : children) {
            System.out.print(child + ":");
            String childPath = "/super/" + child;
            String data = zkClient.readData(childPath); // 读取指定节点的值
            System.out.println(data);
        }

        zkClient.close();
    }
}

上一篇下一篇

猜你喜欢

热点阅读