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();          
            }
        }
    
 }
}
View Code

相关文章: