
zookeeper API 基础
发布日期:2021-05-10 03:10:36
浏览次数:18
分类:精选文章
本文共 4003 字,大约阅读时间需要 13 分钟。
package com.zookeeper;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import org.junit.Before;import org.junit.Test;import java.util.List;/** * @version v1.0 * @Author: huang * @Date: 2020/12/11 */public class ZookeeperDemo { private static final String CONNECT_STRING = "bigdata01:2181,bigdata02:2181,bigdata03:2181"; private static final int SESSION_TIMEOUT = 2000; private ZooKeeper zkClient = null; @Before public void init() throws Exception { zkClient = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() { @Override public void process(WatchedEvent watchedEvent) { System.out.println(watchedEvent.getType() + "--" + watchedEvent.getPath()); System.out.println("连接成功"); try { zkClient.getChildren("/", true); } catch (Exception e) { e.printStackTrace(); } } }); } @Test public void create() throws Exception { String nodeCreated = zkClient.create("/huang", "lan".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(nodeCreated); } @Test public void exist() throws Exception { Stat stat = zkClient.exists("/atguigu1", false); System.out.println(stat == null ? "not exist" : "exist"); } @Test public void setData() throws Exception { zkClient.setData("/atguigu1", "jinlian1".getBytes(), 0); } @Test public void getDate() throws Exception { byte[] zkClientData = zkClient.getData("/atguigu1", null, null); System.out.println(zkClientData); } @Test public void delete() throws KeeperException, InterruptedException { zkClient.delete("/atguigu/a1", 1); } @Test public void lsAll() throws Exception { ls("/"); } public void ls(String path) throws Exception { Listlist = zkClient.getChildren(path, null); if (list == null || list.isEmpty()) { return; } for (String s : list) { if (path.equals("/")) { ls(path + s); } else { ls(path + "/" + s); } } } @Test public void watchChange1() throws Exception { Stat stat = new Stat(); byte[] data = zkClient.getData("/atguigu", new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == Event.EventType.NodeDataChanged) { System.out.println("节点数据改变了!"); } } }, stat); System.out.println(new String(data)); Thread.sleep(50000); } @Test public void watchChange2() throws Exception { final Stat stat = new Stat(); final String path = "/atguigu"; byte[] data = zkClient.getData(path, new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == Event.EventType.NodeDataChanged) { try { byte[] res = zkClient.getData(path, this, stat); System.out.println("节点数据改变了 " + new String(res)); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } } } }, stat); System.out.println(new String(data)); Thread.sleep(50000); } @Test public void watchDelete() throws Exception { String path = "/atuguigu/a3"; Stat stat = new Stat(); byte[] data = zkClient.getData(path, new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == Event.EventType.NodeDeleted) { System.out.println("节点数据删除了!"); } } }, stat); System.out.println("****" + new String(data)); Thread.sleep(Long.MAX_VALUE); }}
发表评论
最新留言
不错!
[***.144.177.141]2025年05月03日 20时34分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux rsyslog 转存至日志服务器
2023-02-01
linux scp命令参数及用法详解--linux远程复制拷贝命令使用实例【转】
2023-02-01
Linux script命令记录(数据库)操作步骤
2023-02-01
linux sed 批量替换字符串
2023-02-01
linux sed命令 批量替换文件内容的方法
2023-02-01
Linux sed命令增删改查 附代码
2023-02-01
linux sed命令详解
2023-02-01
linux sed命令详解
2023-02-01
Linux Shell Shock漏洞利用和实战
2023-02-01
linux shell wc 命令
2023-02-01
linux shell 的 for 循环
2023-02-01
linux shell 编程 9 脚本中调用脚本
2023-02-01
Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作
2023-02-01
Linux Shell——流程控制
2023-02-01
Linux Shell之三 高级变量及字符串
2023-02-01
Linux Shell编程新手入门教程(六)
2023-02-01
Linux Shell编程最重要的十个核心概念,零基础入门到精通,收藏这一篇就够了
2023-02-01
Linux Shell脚本入门--grep命令详解
2023-02-01
Linux Shell脚本处理JSON字符串
2023-02-01
Linux Shell脚本通过参数名传递参数
2023-02-01