【zookeeper】原生Java客户端API入门 05《判断节点是否存在和exists()使用》

文章目录

exists()作用

客户端可以通过ZooKeeper的API来检测节点是否存在,有如下4个接口:

public Stat exists(final String path, Watcher watcher)
public Stat exists(String path, boolean watch)
public void exists(final String path, Watcher watcher, StatCallback cb, Object ctx)
public void exists(String path, boolean watch, StatCallback cb, Object ctx)

这里列出的4个API分别是用同步(前2个)和异步方式(后两个)来检测节点是否存在的接口,API方法的参数说明如下表所示:

参数名说明
path指定数据节的节点路径,即API调用的目的是检测该节点是否存在
watcher注册的Watcher,用于监听以下三类事件: 节点被创建 、节点被删除、 节点被更新
watch指定是否复用ZooKeeper中默认的Watcher
cb注册一个异步回调函数
ctx用于传递上下文信息的对象

举例

同步方法的返回值为Stat,如果节点为空,则返回null,据此,我们可以判断某个节点是否为空

import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

import java.io.IOException;

public class ZookeeperExistsTest {
    public  static void main(String[] args) throws KeeperException, InterruptedException, IOException {
        ZooKeeper zk = new ZooKeeper("10.57.66.192:2181", 5000, new Watcher() {
            @Override
            public void process(WatchedEvent event) {

            }
        });

       Stat stat =  zk.exists("/zk-node",false);
       if(stat == null){
           System.out.println("节点为空");
           //节点不存在,可以去创建
           //zk.create();
       }else{
           System.out.println("节点不为空");
           //节点已存在,查询节点的数据
           //zk.getData();
       }
    }
}

如果此时不存在该节点执行结果:

节点为空






参考:
《r3.5.3-beta》
《ZooKeeper之Java客户端API使用—检测节点是否存在》 方法介绍

《zookeeper知识点三(判断节点是否存在)》判断为空例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值