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); } }
JAVA操作zookeeper(精簡篇)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.