Zookeeper Java Api的使用

压下载的zookeeper-3.4.10.tar.gz获得zookeeper-3.4.10文件夹,里面的jar是需要用到的依赖包。

打开eclipse,创建一个java工程。


导入相应的jar包。

 

创建会话

packagezookeeperTest;

 

importjava.io.IOException;

 

importorg.apache.zookeeper.WatchedEvent;

importorg.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooKeeper;

 

public class CreatSession implements Watcher {

   

    private static ZooKeeper zookeeper;

public static void main(String[] args) throws IOException {

    zookeeper = new ZooKeeper("10.250.109.123", 5000, new CreatSession());

   

    System.out.println(zookeeper.getState());

    try {

       Thread.sleep(Integer.MAX_VALUE);

    } catch (InterruptedException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

    }

}

@Override

public void process(WatchedEvent event) {

    // TODO Auto-generated method stub

    System.out.println("目前事件"+event);

   

}

}

 

 

运行结果:

 

同步创建节点:

代码:

packagezookeeperTest;

 

importjava.io.IOException;

 

importorg.apache.zookeeper.CreateMode;

importorg.apache.zookeeper.KeeperException;

import org.apache.zookeeper.WatchedEvent;

importorg.apache.zookeeper.Watcher;

importorg.apache.zookeeper.Watcher.Event.KeeperState;

importorg.apache.zookeeper.ZooDefs.Ids;

importorg.apache.zookeeper.ZooKeeper;

 

public class CreateNode implements Watcher {

 

    private static ZooKeeper zookeeper;

 

    public static void main(String[] args) throws IOException {

       zookeeper = new ZooKeeper("10.250.109.123", 5000, new CreatNode());

 

       System.out.println(zookeeper.getState());

       try {

           Thread.sleep(Integer.MAX_VALUE);

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

    }

 

    @Override

    public void process(WatchedEvent event) {

       if (event.getState() ==KeeperState.SyncConnected) {

           NodeCreate();

       }

 

    }

 

    private void NodeCreate() {

       String path;

       try {

           path = zookeeper.create("/node_2", "111".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

           System.out.println("return path"+path);

       } catch (KeeperException e) {

           e.printStackTrace();

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

   

    }

}

运行结果:


获取子节点信息:

 

path=zookeeper.create("/node_2","111".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);

修改为:

List<String>children =zookeeper.getChildren("/", false);

System.out.println(children);

运行结果


其中参数false为是否监听节点变化

packagezookeeperTest;

importjava.io.IOException;

importjava.util.List;

importorg.apache.zookeeper.KeeperException;

importorg.apache.zookeeper.WatchedEvent;

importorg.apache.zookeeper.Watcher;

import org.apache.zookeeper.Watcher.Event.EventType;

importorg.apache.zookeeper.Watcher.Event.KeeperState;

importorg.apache.zookeeper.ZooKeeper;

 

public class NewMsg implements Watcher {

 

    private static ZooKeeper zookeeper;

 

    public static void main(String[] args) throws IOException {

       zookeeper = new ZooKeeper("10.250.109.123", 5000, new NewMsg());

 

       System.out.println(zookeeper.getState());

       try {

           Thread.sleep(Integer.MAX_VALUE);

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

    }

 

    @Override

    public void process(WatchedEvent event) {

       if (event.getState() ==KeeperState.SyncConnected) {

           if (event.getType() ==EventType.None && null == event.getPath()) {

              msg();

           } else {

              if (event.getType() ==EventType.NodeChildrenChanged)

                  try {

                     System.out.println(zookeeper.getChildren(event.getPath(), true));

                  } catch (KeeperException e) {

                     e.printStackTrace();

                  } catch (InterruptedException e) {

                     e.printStackTrace();

                  }

 

           }

 

       }

 

    }

 

    private void msg() {

 

       try {

           List<String> children = zookeeper.getChildren("/", true);

           System.out.println(children);

       } catch (KeeperException e) {

           e.printStackTrace();

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

 

    }

}

 

运行结果:


当我们在客户端创建一个新的节点时,


 在控制台会自动输出


运行实验的CreateNode类新建后结果等同。

 

删除操作:

 代码为:

    zookeeper.delete("/node_1", -1);

 

第一个参数为节点路径,第二个参数为版本信息,当设置为-1时表示不检验版本信息。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值