博客
关于我
使用zookeeper API实现zookeeper的基本操作
阅读量:281 次
发布时间:2019-03-01

本文共 3624 字,大约阅读时间需要 12 分钟。

参考了网上的一个例子,现在程序可以跑了,但是由于时间原因,明天再做深入研究。

这里先记下参考的例子及其代码()

package zookeeper;import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;public class MyZookeeper implements Watcher {	private ZooKeeper zookeeper;	/**	 * 超时时间	 */	private static final int SESSION_TIME_OUT = 2000;	private CountDownLatch countDownLatch = new CountDownLatch(1);	@Override	public void process(WatchedEvent event) {		if (event.getState() == KeeperState.SyncConnected) {			System.out.println("Watch received event");			countDownLatch.countDown();		}	}	/**	 * 连接zookeeper	 * 	 * @param host	 * @throws Exception	 */	public void connectZookeeper(String host) throws Exception {		zookeeper = new ZooKeeper(host, SESSION_TIME_OUT, this);		countDownLatch.await();		System.out.println("zookeeper connection success");	}	/**	 * 创建节点	 * 	 * @param path	 * @param data	 * @throws Exception	 */	public String createNode(String path, String data) throws Exception {		return this.zookeeper.create(path, data.getBytes(),				Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);	}	/**	 * 获取路径下所有子节点	 * 	 * @param path	 * @return	 * @throws KeeperException	 * @throws InterruptedException	 */	public List
getChildren(String path) throws KeeperException, InterruptedException { List
children = zookeeper.getChildren(path, false); return children; } /** * 获取节点上面的数据 * * @param path * 路径 * @return * @throws KeeperException * @throws InterruptedException */ public String getData(String path) throws KeeperException, InterruptedException { byte[] data = zookeeper.getData(path, false, null); if (data == null) { return ""; } return new String(data); } /** * 设置节点信息 * * @param path * 路径 * @param data * 数据 * @return * @throws KeeperException * @throws InterruptedException */ public Stat setData(String path, String data) throws KeeperException, InterruptedException { Stat stat = zookeeper.setData(path, data.getBytes(), -1); return stat; } /** * 删除节点 * * @param path * @throws InterruptedException * @throws KeeperException */ public void deleteNode(String path) throws InterruptedException, KeeperException { zookeeper.delete(path, -1); } /** * 获取创建时间 * * @param path * @return * @throws KeeperException * @throws InterruptedException */ public String getCTime(String path) throws KeeperException, InterruptedException { Stat stat = zookeeper.exists(path, false); return String.valueOf(stat.getCtime()); } /** * 获取某个路径下孩子的数量 * * @param path * @return * @throws KeeperException * @throws InterruptedException */ public Integer getChildrenNum(String path) throws KeeperException, InterruptedException { int childenNum = zookeeper.getChildren(path, false).size(); return childenNum; } /** * 关闭连接 * * @throws InterruptedException */ public void closeConnection() throws InterruptedException { if (zookeeper != null) { zookeeper.close(); } }}
package zookeeper;import java.util.List;/** * Hello world! *  */public class App {	public static void main(String[] args) throws Exception {		MyZookeeper zookeeper = new MyZookeeper();		zookeeper.connectZookeeper("127.0.0.1:2181");		List
children = null; children = zookeeper.getChildren("/"); System.out.println(children); zookeeper.closeConnection(); }}

 

转载地址:http://ydgo.baihongyu.com/

你可能感兴趣的文章
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>