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 + "\t" + data); } });
2.监听子节点变化(只能监听字节点,子孙节点无效)
geneClient.subscribeChildChanges("/test1", new IZkChildListener() { @Override public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception { System.out.println(parentPath+"\t"); for(String s:currentChilds){ System.out.println(s); } } });
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-03-17 【Mysql优化】索引覆盖
2018-03-17 【Mysql优化】MySQL Profiling 的使用
2018-03-17 【MySQL优化】使用show status查看MySQL服务器状态信息
2018-03-17 【Mysql优化】聚簇索引与非聚簇索引概念
2018-03-17 【Mysql优化】索引优化策略
2018-03-17 【mysql优化1】表的优化与列类型选择
2018-03-17 mysql 各数据类型的 大小及长度