栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

4.zookeeper3.5.7相关API操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

4.zookeeper3.5.7相关API操作

创建zk链接

核心类 org.apache.zookeeper.ZooKeeper#ZooKeeper(java.lang.String, int, org.apache.zookeeper.Watcher)

public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher)
    @Before
    public void init() throws Exception {
        zkClient = new ZooKeeper(zkServers, sessionTimeout, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                log.info("事件类型:{} ,路径:{} ,状态:{} ", watchedEvent.getType(), watchedEvent.getPath(), watchedEvent.getState());
            }
        });
    }
创建znode

核心类 org.apache.zookeeper.ZooKeeper#create(java.lang.String, byte[], java.util.List, org.apache.zookeeper.CreateMode)

public String create(final String path, byte data[], List acl,
            CreateMode createMode)
    
    @Test
    public void testCreateNode() throws KeeperException, InterruptedException {
        
        zkClient.create("/demo", "demoData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    }
获取节点路径信息

核心类org.apache.zookeeper.ZooKeeper#getChildren(java.lang.String, boolean)

public List getChildren(String path, boolean watch);

public List getChildren(final String path, Watcher watcher);
    @Test
    public void testWatchNode() throws KeeperException, InterruptedException {
        List children = zkClient.getChildren("/demo", true);
        log.info(String.join(",", children));
        Thread.sleep(600 * 1000);
    }
获取节点数据

核心类org.apache.zookeeper.ZooKeeper#getData(java.lang.String, org.apache.zookeeper.Watcher, org.apache.zookeeper.data.Stat)

public byte[] getData(final String path, Watcher watcher, Stat stat)
        throws KeeperException, InterruptedException
    @Test
    public void testGetData() throws KeeperException, InterruptedException {
        Stat stat = new Stat();

        byte[] data = zkClient.getData("/demo", new Watcher() {
            @SneakyThrows
            @Override
            public void process(WatchedEvent watchedEvent) {
                log.info("getData 事件类型:{} ,路径:{} ,状态:{} ", watchedEvent.getType(), watchedEvent.getPath(), watchedEvent.getState());
                byte[] changeData = zkClient.getData("/demo", true, null);
                log.info("节点变化数据:{}", new String(changeData));
            }
        }, stat);
        log.info("节点数据:{}", new String(data));
        Thread.sleep(600 * 1000);
    }
查看节点是否存在

核心类org.apache.zookeeper.ZooKeeper#exists(java.lang.String, boolean)

public Stat exists(String path, boolean watch) throws KeeperException;
// 重载方法
public Stat exists(final String path, Watcher watcher)
    
    @Test
    public void testExist() throws Exception {
        Stat exists = zkClient.exists("/demo", false);
        log.info(exists.toString());
    }
完整代码
@Slf4j
public class ZkClientDemo {

    private static String zkServers = "node1:2181";

    private static int sessionTimeout = 2000;

    private static ZooKeeper zkClient;

    @Before
    public void init() throws Exception {
        zkClient = new ZooKeeper(zkServers, sessionTimeout, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                log.info("事件类型:{} ,路径:{} ,状态:{} ", watchedEvent.getType(), watchedEvent.getPath(), watchedEvent.getState());
            }
        });
    }

    
    @Test
    public void testCreateNode() throws KeeperException, InterruptedException {
        
        zkClient.create("/demo", "demoData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    }

    
    @Test
    public void testWatchNode() throws KeeperException, InterruptedException {
        List children = zkClient.getChildren("/demo", true);
        log.info(String.join(",", children));
        Thread.sleep(600 * 1000);
    }

    @Test
    public void testGetData() throws KeeperException, InterruptedException {
        Stat stat = new Stat();

        byte[] data = zkClient.getData("/demo", new Watcher() {
            @SneakyThrows
            @Override
            public void process(WatchedEvent watchedEvent) {
                log.info("getData 事件类型:{} ,路径:{} ,状态:{} ", watchedEvent.getType(), watchedEvent.getPath(), watchedEvent.getState());
                byte[] changeData = zkClient.getData("/demo", true, null);
                log.info("节点变化数据:{}", new String(changeData));
            }
        }, stat);
        log.info("节点数据:{}", new String(data));
        Thread.sleep(600 * 1000);
    }


    
    @Test
    public void testExist() throws Exception {
        Stat exists = zkClient.exists("/demo", false);
        log.info(exists.toString());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号