Java鏈接Zookeeper

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章