package com.zookeeper.utils;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
/**
* Zookeeper
*/
public class ZookeeperUtils{
private Logger logger = Logger.getLogger(this.getClass());
//創建一個watcher對象,當我們對Zookeeper進行修改的時候都會觸發該事件
private Watcher watcher = new Watcher() {
@Override
public void process(WatchedEvent event) {
logger.debug("--------ZK Watcher---------");
}
};
//初始化Zookeeper
private ZooKeeper zooKeeper ;
public void zookeeperInit() throws IOException {
//多個ip使用,號分割
zooKeeper = new ZooKeeper("192.168.100.128:2180, 192.168.100.128:2182, 192.168.100.128:2183", 20000 , watcher);
}
public void ZKOption() throws Exception, InterruptedException {
logger.debug("-----ZK Option-----");
//參數一:創建的路徑/zoo1 參數二:節點上的數據 參數三:權限 參數四:節點類型
zooKeeper.create("/zoo1", "zoo1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//添加watcher ,對zoo1進行監控變化-->獲取數據 ,這個監控只會對下次操作節點起到作用
zooKeeper.getData("/zoo1", this.watcher, null);
//修改zoo1節點
zooKeeper.setData("/zoo1", "hello".getBytes(), -1);
//----------------------獲取數據----------------------------
logger.debug("獲取第一次節點信息:"+zooKeeper.getData("/zoo1", this.watcher, null));
System.out.println("獲取第二次數據信息:"+zooKeeper.getData("/zoo1", this.watcher, null));
//-----------------這次操作的節點不會進行監控-----------------------
zooKeeper.setData("/zoo1", "world".getBytes(), -1);
//----------------------獲取數據----------------------------
logger.debug("獲取第二次數據信息:"+zooKeeper.getData("/zoo1", this.watcher, null));
System.out.println("獲取第二次數據信息:"+zooKeeper.getData("/zoo1", this.watcher, null));
//查看節點狀態
logger.debug("節點狀態:"+zooKeeper.getState());
System.out.println("節點狀態:"+zooKeeper.getState());
//刪除節點
zooKeeper.delete("/zoo1", -1);
System.out.println(zooKeeper.exists("/zoo1", false));
}
//關閉Zookeeper
public void closeZookeeper() throws Exception {
zooKeeper.close();
}
public static void main(String[] args) throws Exception {
ZookeeperUtils utils = new ZookeeperUtils();
utils.zookeeperInit();
utils.ZKOption();
utils.closeZookeeper();
}
}
Java鏈接Zookeeper
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.