zoukankan      html  css  js  c++  java
  • 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);
                    }
                }
            });
  • 相关阅读:
    【转】 Pro Android学习笔记(三四):Menu(5):动态菜单
    【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
    【转】 Pro Android学习笔记(三二):Menu(3):Context菜单
    【转】 Pro Android学习笔记(三一):Menu(2):扩展、图片、子菜单
    【转】Pro Android学习笔记(三十):Menu(1):了解Menu
    【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
    数据库:ubantu下MySQL安装指南
    ruby 异常处理
    js查看对象内容
    rails的respond to format
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/10545166.html
Copyright © 2011-2022 走看看