Zkclient是对Zookeeper的原生API进行了包装,实现了超时重连、Watcher反复注册等功能,它可以实现递归创建,删除节点,但是zkClient不能递归给节点赋值。

主要的api如下:

  创建永久节点:

  public void createPersistent(String path)

  public void createPersistent(String path, Object data)

  public void createPersistent(String path, Object data, List<ACL> acl)  

  创建临时节点:

  public void createEphemeral(final String path)

  public void createEphemeral(final String path, final Object data)

  public void createEphemeral(final String path, final Object data, final List<ACL> acl)

  删除节点:

  public boolean delete(final String path)

  public boolean delete(final String path, final int version)

  public boolean deleteRecursive(String path)(递归删除节点,在原生api,如果一个节点存在子节点,那么它将无法直接删除,必须一层层遍历先删除全部子节点,然后才能将目标节点删除)

  读取节点:

  public List<String> getChildren(String path)

  更新数据:

  public void writeData(String path, Object object)

  public void writeData(final String path, Object datat, final int expectedVersion)

  判断节点是否存在:

  protected boolean exists(final String path, final boolean watch)

  注册监听事件:

  ZkClient的subscribeChildChanges方法

  ZkClient的subscribeDataChanges方法

  下面看一个测试,首先导入包:

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
package com.test.protobuf;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient; import java.util.List; /**
* Created by szekinwin on 2017/7/8.
*/
public class ZkClientDemo { //zookeeper连接地址
private static final String CONNECT_ADR="172.31.19.222:2181,172.31.19.223:2181,172.31.19.234:2181"; public static void main(String[]args){ //5000,连接超时时间
ZkClient zkClient = new ZkClient(CONNECT_ADR,5000); System.out.println("Connect successfully.."); String path="/testRoot";
//监听节点 subscribeChildChanges 监听当前节点以及子节点增加或者删除
zkClient.subscribeChildChanges(path, new IZkChildListener() {
public void handleChildChange(String s, List<String> list) throws Exception {
System.out.println("路径:"+s);
System.out.println("变更的节点为:"+list);
}
});
//监听节点 subscribeDataChanges 监听当前节点以及子节点内容的变更
zkClient.subscribeDataChanges(path, new IZkDataListener() {
public void handleDataChange(String s, Object o) throws Exception {
System.out.println("路径:"+s);
System.out.println("变更的内容为:"+o.toString());
} public void handleDataDeleted(String s) throws Exception {
System.out.println("路径:"+s);
}
});
//创建节点 true表示递归创建
zkClient.createPersistent("/testRoot/children",true);
//修改节点信息
zkClient.writeData("/testRoot","testRoot");
zkClient.writeData("/testRoot","new testRoot");
//修改子节点信息
zkClient.writeData("/testRoot/children","testRoot children");
//递归删除节点
zkClient.deleteRecursive(path);
try {
Thread.sleep(50000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

Zookeeper Zkclient客户端的更多相关文章

  1. .NET Core)的ZooKeeper异步客户端

    支持断线重连.永久watcher.递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端   阅读目录 什么是ZooKeeper? 项目介绍 提供的功能 使用说明 FAQ 在公司内部 ...

  2. zookeeper curator客户端之增删改查

    zookeeper curator客户端之增删改查 zookeeper安装:https://www.cnblogs.com/zwcry/p/10272506.html curator客户端是Apach ...

  3. ZooKeeper单机客户端的启动流程源码阅读

    客户端的启动流程 看上面的客户端启动的脚本图,可以看到,zookeeper客户端脚本运行的入口ZookeeperMain.java的main()方法, 关于这个类可以理解成它是程序启动的辅助类,由它提 ...

  4. Zookeeper(一)客户端

    Zookeeper-客户端 例子: // org.apache.zookeeper.ZooKeeperMain public class ZooKeeperMain { public static v ...

  5. 基于Zookeeper实现客户端动态监听服务器上下线

    一.在具体实现之前,先来了解一下Zookeeper的监听器的原理: 图中Main()线程作为客户端,当在主线程中创建Zookeeper客户端时,会默认创建两个子线程:Listener和connect, ...

  6. 为什么dubbo使用ZkClient作为zookeeper的客户端

    本文内容并非原创,使用资料均来自互联网. dubbo使用了zkClient而不是使用zookeeper本身的客户端与zookeeper进行交互,为什么呢? 先看看zookeeper本身自带的客户端的问 ...

  7. 七:zooKeeper开源客户端ZkClient的api测试

    ZkClient是Gitthub上一个开源的ZooKeeper客户端.ZKClient在ZooKeeper原生API接口之上进行了包装,是一个更加易用的ZooKeeper客户端.同时ZKClient在 ...

  8. zookeeper之三 ZKClient客户端的使用

    ZKClient在原生API接口上进行了包装,同时在内部实现了诸如session超时重连.watcher反复注册等功能,使得zookeeper客户端繁琐的细节对开发人员透明.下面将从以下几个方面来使用 ...

  9. Zookeeper开源客户端框架Curator简介

    Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情 ...

随机推荐

  1. webpack打包页面空白的解决方法

  2. PHP归档phar性能測试

    PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...

  3. CentOS6.5之Zabbix3.2.2 Server安装、汉化及Agent安装

    1.安装MySQL 1.1.安装MySQL rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum ...

  4. CentOS 7 安装vsftpd 服务器

    在CentOS7上安装ftp服务器用于保存服务端上传的图片. 1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftp ...

  5. vultr服务器上搭建PHP运行环境-centos7

    安装nginx: yum install nginx 开启Nginx systemctl start nginx 访问你的域名或者ip 例如:quantaedu.com 安装PHP 查看系统版本lsb ...

  6. 工作笔记——限定input上传文件对话框中能选取的文件的格式

    原文:http://www.dengzhr.com/frontend/1059 input[file]标签的accept属性可用于指定上传文件的 MIME类型 . 例如,想要实现默认上传图片文件的代码 ...

  7. mysql update 多表 (复制)

    定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价 ...

  8. PL/SQL Developer 登录 Oracle 12c和Win10下安装Oracle 11g

    安装了Oracle 12c 后使用PL/SQL Developer怎么也不能连接到Oracle 12c.网上找一下,按照fcflying所说的操作成功了,所以做个笔记: 1)安装Oracle 12c ...

  9. jar打包方法使用整理

    dos窗口下操作jar:(JDK的命令) jar命令能够把Java应用打包成一个文件,这个文件的扩展名为.jar,称为JAR文件.JAR 文件非常类似 ZIP 文件.准确的说,它就是 ZIP 文件,所 ...

  10. find()函数

    find()函数返回类型:size_type 1/S.find(T):返回T在S中第一次匹配的下标位置 2/S.find_first_of(T):返回字符串T第一个字符在S中第一次出现的下标位置 3/ ...