1.导入jar
package com.toov5.zookeeper; import java.io.IOException; import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.EventType; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; public class JavaZKTest { private static final String CONNECTSTRING ="192.168.91.5"; private static int SESSIONTIMEOUT=5000; //超时时间 //使用Java并发包的 信号量 控制zk连接成功之后 开始创建 private static final CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) throws IOException, KeeperException, InterruptedException { ZooKeeper zooKeeper = null; try { //1zk创建了一个连接 zooKeeper = new ZooKeeper(CONNECTSTRING, SESSIONTIMEOUT, new Watcher() { public void process(WatchedEvent event) { //监听节点是否发生变化 连接成功 (代码从上往下执行,创建节点 直接copy) // 获取事件状态 KeeperState keeperState = event.getState(); // 获取事件类型 EventType eventType = event.getType(); if (KeeperState.SyncConnected == keeperState) { //状态判断 if (EventType.None == eventType) { countDownLatch.countDown(); //--操作 到0时候 await启动了哦 System.out.println("zk 启动连接..."); //才可以去创建节点的逻辑执行 需要用到信号量 } } } }); countDownLatch.await(); //不为0 一直等待~~ //创建持久节点 //Ids.OPEN_ACL_UNSAFE连接权限 //// CreateMode对应好多模式 关于 SEQENTIAL 重名情况下 加了个id 保证唯一性 String createNode = zooKeeper.create("/test666", "toov5".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println("节点名称"+createNode); } catch (Exception e) { }finally { if (zooKeeper != null) { //关闭连接 zooKeeper.close(); } } } }