博客
关于我
使用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/

你可能感兴趣的文章
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>