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 + "\t" + data);
            }
        });
复制代码

 

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

复制代码
        geneClient.subscribeChildChanges("/test1", new IZkChildListener() {
            @Override
            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
                System.out.println(parentPath+"\t");
                for(String s:currentChilds){
                    System.out.println(s);
                }
            }
        });
复制代码

 

posted @   QiaoZhi  阅读(1933)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2018-03-17 【Mysql优化】索引覆盖
2018-03-17 【Mysql优化】MySQL Profiling 的使用
2018-03-17 【MySQL优化】使用show status查看MySQL服务器状态信息
2018-03-17 【Mysql优化】聚簇索引与非聚簇索引概念
2018-03-17 【Mysql优化】索引优化策略
2018-03-17 【mysql优化1】表的优化与列类型选择
2018-03-17 mysql 各数据类型的 大小及长度
点击右上角即可分享
微信分享提示