zookeeper JavaAPI 操作-watch监听

发布时间 2023-08-04 17:49:27作者: 林浅

1.NodeCache监听代码:

@Test
public void testNodeCache() throws Exception {
    //1.创建NodeCache对象
    NodeCache nodeCache = new NodeCache(client,"/app1");
    //2.注册监听
    nodeCache.getListenable().addListener(new NodeCacheListener() {
        @Override
        public void nodeChanged() throws Exception {
            System.out.println("节点变化了");
            //获取修改节点后的数据
            byte[] data = nodeCache.getCurrentData().getData();
            System.out.println(data);
        }
    });
    //3.开启监听,如果设置为true,则开启监听是,加载缓冲数据
    nodeCache.start(true);
    while (true){

    }
}

2.pathchildrenCache监听代码:

/**
 * 演示testPathchildrenCache:监听某个节点的子节点们
 *
 * */
@Test
public void testPathchildrenCache() throws Exception {
    //1.创建监听对象
    PathChildrenCache pathChildrenCache = new PathChildrenCache(client,"/app2",true);
    //2.绑定监听器
    pathChildrenCache.getListenable().addListener(new PathChildrenCacheListener() {
        @Override
        public void childEvent(CuratorFramework curatorFramework, PathChildrenCacheEvent pathChildrenCacheEvent) throws Exception {
            System.out.println("子节点变化了");
            System.out.println(pathChildrenCacheEvent);
            //监听子节点的数据变更,并且拿到变更后的数据
                //1.获取类型
            PathChildrenCacheEvent.Type type = pathChildrenCacheEvent.getType();
                //2.判断类型是否是update
            if (type.equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){
                System.out.println("数据变更了");
                byte[] data = pathChildrenCacheEvent.getData().getData();
                System.out.println(new String(data));

            }

        }
    });
    //3.开启
    pathChildrenCache.start();
    while (true){

    }
}

3.TreeCache:监听某个节点和所有子节点们

//演示 TreeCache :监听某个节点和自己所有的子节点们
@Test
public void testTreeCache() throws Exception{
    //1.创建监听器
    TreeCache treeCache = new TreeCache(client,"/app2");
    //2.注册监听
    treeCache.getListenable().addListener(new TreeCacheListener() {
        @Override
        public void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception {
            System.out.println("节点变化了");
            System.out.println(treeCacheEvent);
        }
    });
    //3.开启
    treeCache.start();
    while (true){
        
    }
}