pom.xml
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>

版本:zookeeper-3.5.7

import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;
import org.junit.jupiter.api.Test; import java.io.IOException;
import java.util.List; public class TestZkClient
{
private ZkClient zkClient = null; @Test
public void test() throws IOException
{
//zk server 服务器ip地址 端口号
//会话超时时间
//连接超时时间
//序列化方式 对象
zkClient = new ZkClient("192.168.0.115:2181",60000*30,60000,new SerializableSerializer()); System.out.println(zkClient); //监听节点变化
//需要通过java修改zookeeper数据,才能监听到
zkClient.subscribeDataChanges("/node1", new IZkDataListener()
{
//节点数据变化时触发
@Override
public void handleDataChange(String s, Object o) throws Exception
{
System.out.println("change Node: " + s);
System.out.println("change data: " + o);
}
//节点数据删除时触发
@Override
public void handleDataDeleted(String s) throws Exception
{
System.out.println("delete Node: " + s);
}
}); //testWriteNodeData();
//testDeleteNode(); //System.in.read(); //阻塞当前监听,使得监听不会停止 //testCreateNode();
//testDeleteNode();
//testFindNode();
//testFindNodeData();
//testFindNodeAndStat();
//testWriteNodeData(); zkClient.close();
} //创建zk节点
public void testCreateNode()
{
//创建持久节点
String node1 = zkClient.create("/node1", "xiaochen", CreateMode.PERSISTENT);
System.out.println(node1);
//创建持久顺序节点
String node2 = zkClient.create("/node1/names","zhangsan",CreateMode.PERSISTENT_SEQUENTIAL);
System.out.println(node2);
//创建临时节点
String node3 = zkClient.create("/node1/lists","xiaoxiao",CreateMode.EPHEMERAL);
System.out.println(node3);
//创建临时顺序节点
String node4 = zkClient.create("/node1/lists1","xiaoming",CreateMode.EPHEMERAL_SEQUENTIAL);
System.out.println(node4);
} //删除zk节点
public void testDeleteNode()
{
//删除没有子节点的节点 如果节点有子节点会报错
/*boolean b1 = zkClient.delete("/node1");
System.out.println(b1);*/ //遍历删除节点信息
boolean b2 = zkClient.deleteRecursive("/node1");
System.out.println(b2);
} //查询zk节点
public void testFindNode()
{
List<String> children = zkClient.getChildren("/");
for (String child : children)
{
System.out.println(child);
}
} //查询zk某个节点数据
//注意:通过java客户端操作时,需要保证节点存储的数据和获取节点时的数据序列化方式一致
public void testFindNodeData()
{
Object data = zkClient.readData("/node1");
System.out.println(data);
} //查询zk节点数据并获取状态信息
public void testFindNodeAndStat()
{
Stat stat = new Stat();
Object data = zkClient.readData("/node1",stat);
System.out.println(data);
System.out.println(stat);
} //修改zk节点数据
public void testWriteNodeData()
{
zkClient.writeData("/node1",233);
} }

  

												

java 操作 zookeeper的更多相关文章

  1. Java操作zookeeper

    Java操作zookeeper总共有三种方式: 1.原生的Java API 2.zkclient 3.curator 第一种实现代码: pom.xml <dependency> <g ...

  2. java 操作zookeeper

    java 操作zookeeper(一) 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper ...

  3. zookeeper(三):java操作zookeeper

    引入jar包 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 ...

  4. Java 使用ZkClient操作Zookeeper

    目录 ZkClient介绍 导入jar包依赖 简单使用样例 ZkClient介绍 因为Zookeeper API比较复杂,使用并不方便,所以出现了ZkClient,ZkClient对Zookeeper ...

  5. Java代码操作zookeeper

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  6. Zookeeper--java操作zookeeper

    如果是使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 zkclien ...

  7. Zookeeper入门(七)之Java连接Zookeeper

    Java操作Zookeeper很简单,但是前提要把包导对. 关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装 下面进入正题: 一.导入依赖 < ...

  8. Java curator操作zookeeper获取kafka

    Java curator操作zookeeper获取kafka Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更 ...

  9. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  10. Java操作hbase总结

    用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...

随机推荐

  1. android root app 无法umount

    app已经有root权限了. 在执行umount /sbin时候总是不成功,但是在adb 的shell 里是可以的. 研究半天后发现,原来app的mount 空间被修改了. 用以下方法解决问. ech ...

  2. java中带回调函数的字符串替换,类似js中的replace(rgExp,function)

    https://blog.csdn.net/weixin_33834075/article/details/91599852 import java.util.regex.Matcher; impor ...

  3. .Net的产品变迁

    从开始接触.Net以来,转眼过了好几年.在这许多年里,不得不感慨.Net产品线也在不断发生着变化, 下面就简单的进行一下梳理. .Net能做桌面应用程序,也就是C/S,也能做网站开发,就是通常说的B/ ...

  4. Spring Boot 配置 Swagger(3.0.0 版本)

    添加 Swagger 依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter --> ...

  5. JVM系列(三):JVM内存结构和参数说明

    一.概述,内存结构图 二.堆Heap,存放对象实例,是垃圾回收的主要区域,非堆的内存不进行GC,GC会导致程序运行中断, 物理上可以不连续,堆空间不足时会产生OutOfMemoryException, ...

  6. Vue非父子組件(爺孫關係)通信Provide&&Inject

    通常,当我们需要从父组件向子组件传递数据时,我们使用 props.想象一下这样的结构:有一些深度嵌套的组件,而深层的子组件只需要父组件的部分内容.在这种情况下,如果仍然将 prop 沿着组件链逐级传递 ...

  7. 用Python把PDF文件转换成Word文档

    首先,下载所需要的库 1 :pdfminer   安装库命令: pip install pdfminer3k 2:  docx     安装库命令: pip install python_docx 开 ...

  8. 访问远程服务-RPC 与 REST

    方法调用 所做的传递参数.传回结果都依赖于栈内存.所以Caller 调用者 Callee 被调用者应该同属一个进程,拥有相同的 栈内存, 进程间通信(Inter-Process Communicati ...

  9. python 的sys.argv 和 sys.path.append() 用法和PYTHONPATH环境变量

    sys.argv 我们编写一个测试用例test.py ,内容如下 imoprt sys a = sys.argv b = len(sys.argv) c = sys.argv[0] d = sys.a ...

  10. get与post区别,https协议的通信机制

    get与post区别 幂等的的意思就是一个操作不会修改状态信息,并且每次操作的时候都返回同样的结果.即:做多次提交和做一次的对服务器效果是一样 的. 方法 用法 是否能修改服务器数据 幂等 安全 入参 ...