1. 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

  1. import org.I0Itec.zkclient.IZkDataListener;
  2. import org.I0Itec.zkclient.ZkClient;
  3. import org.I0Itec.zkclient.serialize.SerializableSerializer;
  4. import org.apache.zookeeper.CreateMode;
  5. import org.apache.zookeeper.data.Stat;
  6. import org.junit.jupiter.api.Test;
  7.  
  8. import java.io.IOException;
  9. import java.util.List;
  10.  
  11. public class TestZkClient
  12. {
  13. private ZkClient zkClient = null;
  14.  
  15. @Test
  16. public void test() throws IOException
  17. {
  18. //zk server 服务器ip地址 端口号
  19. //会话超时时间
  20. //连接超时时间
  21. //序列化方式 对象
  22. zkClient = new ZkClient("192.168.0.115:2181",60000*30,60000,new SerializableSerializer());
  23.  
  24. System.out.println(zkClient);
  25.  
  26. //监听节点变化
  27. //需要通过java修改zookeeper数据,才能监听到
  28. zkClient.subscribeDataChanges("/node1", new IZkDataListener()
  29. {
  30. //节点数据变化时触发
  31. @Override
  32. public void handleDataChange(String s, Object o) throws Exception
  33. {
  34. System.out.println("change Node: " + s);
  35. System.out.println("change data: " + o);
  36. }
  37. //节点数据删除时触发
  38. @Override
  39. public void handleDataDeleted(String s) throws Exception
  40. {
  41. System.out.println("delete Node: " + s);
  42. }
  43. });
  44.  
  45. //testWriteNodeData();
  46. //testDeleteNode();
  47.  
  48. //System.in.read(); //阻塞当前监听,使得监听不会停止
  49.  
  50. //testCreateNode();
  51. //testDeleteNode();
  52. //testFindNode();
  53. //testFindNodeData();
  54. //testFindNodeAndStat();
  55. //testWriteNodeData();
  56.  
  57. zkClient.close();
  58. }
  59.  
  60. //创建zk节点
  61. public void testCreateNode()
  62. {
  63. //创建持久节点
  64. String node1 = zkClient.create("/node1", "xiaochen", CreateMode.PERSISTENT);
  65. System.out.println(node1);
  66. //创建持久顺序节点
  67. String node2 = zkClient.create("/node1/names","zhangsan",CreateMode.PERSISTENT_SEQUENTIAL);
  68. System.out.println(node2);
  69. //创建临时节点
  70. String node3 = zkClient.create("/node1/lists","xiaoxiao",CreateMode.EPHEMERAL);
  71. System.out.println(node3);
  72. //创建临时顺序节点
  73. String node4 = zkClient.create("/node1/lists1","xiaoming",CreateMode.EPHEMERAL_SEQUENTIAL);
  74. System.out.println(node4);
  75. }
  76.  
  77. //删除zk节点
  78. public void testDeleteNode()
  79. {
  80. //删除没有子节点的节点 如果节点有子节点会报错
  81. /*boolean b1 = zkClient.delete("/node1");
  82. System.out.println(b1);*/
  83.  
  84. //遍历删除节点信息
  85. boolean b2 = zkClient.deleteRecursive("/node1");
  86. System.out.println(b2);
  87. }
  88.  
  89. //查询zk节点
  90. public void testFindNode()
  91. {
  92. List<String> children = zkClient.getChildren("/");
  93. for (String child : children)
  94. {
  95. System.out.println(child);
  96. }
  97. }
  98.  
  99. //查询zk某个节点数据
  100. //注意:通过java客户端操作时,需要保证节点存储的数据和获取节点时的数据序列化方式一致
  101. public void testFindNodeData()
  102. {
  103. Object data = zkClient.readData("/node1");
  104. System.out.println(data);
  105. }
  106.  
  107. //查询zk节点数据并获取状态信息
  108. public void testFindNodeAndStat()
  109. {
  110. Stat stat = new Stat();
  111. Object data = zkClient.readData("/node1",stat);
  112. System.out.println(data);
  113. System.out.println(stat);
  114. }
  115.  
  116. //修改zk节点数据
  117. public void testWriteNodeData()
  118. {
  119. zkClient.writeData("/node1",233);
  120. }
  121.  
  122. }

  

  1.  

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. 操作系统实战45讲笔记- 07 Cache与内存:程序放在哪儿?

    程序局部性原理: CPU 大多数时间在执行相同的指令或者与此相邻的指令 时间局部性VS空间局部性: a. 时间局部性:当前访问的指令或数据,也可能在之后访问: b. 空间局部性:当程序访问内存地址x时 ...

  2. CSV文件乱码处理方法

    如果csv出现乱码, 直接用记事本打开另存为的格式从utf-8变为ANSI模式即可. 然后再打开

  3. liunx设置QQ邮箱报警

    1.先安装一个软件包, 2.先登录电脑QQ邮箱->设置->账户->账户安全前两条选择开启,并生成授权码,授权码很重要很重要,千万不要泄露. 3.在liunx命令行输入  :vi /e ...

  4. .NetCore自定义模板,发布Nuget

    1.创建模板项目框架 2.创建模板文件 在项目文件夹根目录创建.template.config文件夹,在文件夹下创建新的文件:template.json 内容如下 { "$schema&qu ...

  5. java技术系列(一) Enum

    Enum的本质是类,继承自Enum类. enum直接使用==进行比较就可以. 类型的静态values方法,返回左右的枚举实例. ordinal方法返回enum声明中枚举常亮的位置. enum可以继承接 ...

  6. fragment加radio不可滑动

    public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { ...

  7. vue 生命周期个人理解

    activated():在vue对象存活的情况下,进入当前存在activated()函数的页面时,一进入页面就触发:可用于初始化页面数据等: created():在模板渲染成html前调用,即通常初始 ...

  8. Unity连接海康摄像头(shader转码)硬解码

    1.第一种方法 之前写过就不写了给个地址 2.第二种方法 用海康的SDK (shader转码) 先上效果 demo下载地址: 点击下载 开启多个摄像头的话 第二种比一种流畅

  9. Pytorch————学习1

    torch.nn  仅支持小批量.整个torch.nn程序包仅支持作为小批量样本的输入,而不支持单个样本. 例如,nn.Conv2d采用的是4D张量:nSamples x nChannels x He ...

  10. mac 打开活动监视器(任务管理器)

    打开方式 1.快捷键 command+option+esc 选择需要强制退出的app 2.通过菜单 需要查看完整的占用率 应用程序=>实用工具=〉活动监视器