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 {        List
list = 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); }}
上一篇:windows cmd 自定义关机,重启,休眠
下一篇:java 常用的maven依赖和配置文件(要的都能找到)

发表评论

最新留言

不错!
[***.144.177.141]2025年05月03日 20时34分17秒