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. 实验1task1

      <实验结论> #include <stdio.h> #include <stdlib.h> int main() { printf(" O \n&qu ...

  2. 用Docker搭建GIS本地化服务

    在Linux系统上安装docker 1. 脚本安装(安装的是最新版,也可能是不稳定版) wget -qO- https://get.docker.com/ | sh sudo usermod -aG ...

  3. gson属性disableHtmlEscaping对等于号的转义\u003d,注解符号Expose,SerializedName,Since和Until

    gson属性disableHtmlEscaping对等于号的转义\u003d,注解符号Expose,SerializedName,Since和Until package com.example.cor ...

  4. 学习-Vue2-Vue实例-数据与方法-数据的响应式

    当一个实例被创建时,它将data对象中的所有的property加入到Vue的响应式系统中. 当这些property的值发生改变时,视图将会产生"响应",即匹配更新为新的值.当这些数 ...

  5. vue vant3上传图片文件以流的形式上传

    axios.post("/fjt_fast/sys/comm/upload", { file: param.file}, { headers: { 'Content-Type': ...

  6. mysql开启root用户远程管理权限

    来源:https://blog.csdn.net/qq_29670375/article/details/120590041 1.使用"mysql -uroot -proot"命令 ...

  7. uniapp for显示数据改变时,绑定的list值同时改变

    <template> <view class="container"> <uni-table> <uni-tr v-for="( ...

  8. Attention:何为注意力机制?

    ​  本文来自公众号"AI大道理" 人类利用有限的注意力资源从大量信息中快速筛选出高价值信息,这是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效 ...

  9. #maxlength vs #size form api reference

    #maxlength Used by: password, textfield Description: The maximum amount of characters to accept as i ...

  10. 使用python做基本的数据处理

    使用python做基本的数据处理 1.常用的基本数据结构 元组.列表.字典.集合.常用的序列函数 1.1基本操作 1.1.1 元组:逗号分开的序列值. tup = tuple (4,5,6) tup ...