JAVA操作zookeeper(精簡篇)

package com.xzk.zk;

import org.apache.zookeeper.*;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class ZkExample01 {
    private static final String connectString = "127.0.0.1:2181";
    private static final int sessionTimeout = 5000;
    private static final CountDownLatch countDownLatch = new CountDownLatch(1);

    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
        ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
            public void process(WatchedEvent watchedEvent) {
                //獲取與zk服務器連接的狀態信息
                Event.KeeperState keeperState = watchedEvent.getState();
                //獲取事件類型
                Event.EventType type = watchedEvent.getType();
                ////如果是建立連接狀態
                if(Event.KeeperState.SyncConnected == keeperState){
                    if(Event.EventType.None == type){
                        //如果建立連接成功,則發送信號量,讓後續阻塞的程序繼續向下執行
                        countDownLatch.countDown();
                        out("zk---->建立連接成功");
                    }
                }
            }
        });

        //進行阻塞
        countDownLatch.await();
        //創建持久節點
        zk.create("/zxExample03","2340".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        out("創建zxExample01節點--->成功");
        //獲取該節點所存儲的值
        byte[] data = zk.getData("/zxExample03",false,null);
        out("獲取節點zxExample03的值--->"+new String(data));

        //修改節點的值,-1表示跳過版本檢查,其他正數表示如果傳入的版本號與當前版本號不一致,則修改不成功,刪除是同樣的道理。
      zk.setData("/zxExample03", "2341change".getBytes(), -1);
      byte[] data1 = zk.getData("/zxExample03", false, null);
      out("獲取節點zxExample03的值--->"+new String(data1));

        //判斷節點是否存在
      out("判斷節點zxExample03是否存在--->"+zk.exists("/zxExample03", false));
        //刪除節點
      //zk.delete("/zxExample03", -1);
      //out(zk.exists("/zxExample03", false));
        //釋放資源
        zk.close();
    }

    public static void out(Object o){
        System.out.println(o);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章