月眸


zookeeper学习五:zookeeper在java中的简单应用

毛毛小妖 2019-08-08 527浏览 0条评论
首页/ 正文
分享到: / / / /
package com.ai.trial;

import java.io.IOException;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeperMain;

class ZkUtil {
	private static final String zkUrl = "192.168.179.127:2181";
	private static final int sessionTimeout = 30000;
	private static ZooKeeper zk;
	
	private static final Watcher watcher = new Watcher() {
		
		@Override
		public void process(WatchedEvent event) {
			System.out.println(event.toString());
		}
	};
	
	/**
	 * 描述: 初始化zk实例
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:57:10
	 */
	public void createZkInstance(){
		try {
			zk = new ZooKeeper(zkUrl, sessionTimeout, watcher);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 关闭zk
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:57:29
	 */
	public void zkClose(){
		try {
			zk.close();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 创建普通节点(持久化节点)
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:57:36
	 */
	public void createNode(){
		try {
			zk.create("/zoo", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
		} catch (KeeperException | InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 获取指定节点数据
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:58:07
	 */
	public void getData(){
		try {
			System.out.println(new String(zk.getData("/zoo", false, null)));
		} catch (KeeperException | InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 修改节点值
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:58:24
	 */
	public void setData(){
		try {
			zk.setData("/zoo", "修改后的数据".getBytes(), -1);
		} catch (KeeperException | InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 删除节点
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:58:35
	 */
	public void deleteNode(){
		try {
			zk.delete("/zoo", -1);
		} catch (KeeperException | InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述:查看节点状态
	 * @author shengyu 
	 * @date:2019年8月8日 下午5:58:46
	 */
	public void existNode(){
		try {
			System.out.println("节点状态:"+zk.exists("/zoo", false));
		} catch (KeeperException | InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 描述: 执行命令
	 * @author shengyu
	 * @param command 
	 * @date:2019年8月8日 下午6:10:40
	 */
	public void executeCommandLine(String command){
		ZooKeeperMain main = new ZooKeeperMain(zk);
		try {
			main.executeLine(command);
		} catch (InterruptedException | IOException | KeeperException e) {
			e.printStackTrace();
		}
	}
}

/**
 * 描述: 测试类
 * @author shengyu 
 * @date:2019年8月8日 下午6:00:01
 */
public class TestZk{
	public static void main(String[] args) {
		ZkUtil zkUtil = new ZkUtil();
		zkUtil.createZkInstance();
		//zkUtil.createNode();
		//zkUtil.deleteNode();
		//zkUtil.existNode();
		zkUtil.executeCommandLine("ls /");
		zkUtil.zkClose();
	}
}

 

最后修改:2019-08-08 19:00:33 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

还没有人评论哦~赶快抢占沙发吧~