Zookeeper工具类的封装
来源:互联网 发布:赛睿鼠标sensei淘宝 编辑:程序博客网 时间:2024/06/14 03:57
package com.yc.hadoop_zookeeper;import java.io.IOException;import java.util.List;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;public class ZookeeperUtil { private ZooKeeper zookeeper; public ZookeeperUtil(Watcher watcher) { try { zookeeper=new ZooKeeper("slave01:2181,slave02:2181,slave03:2181", 5000, watcher); } catch (IOException e) { e.printStackTrace(); } } public ZooKeeper getZK(){ return zookeeper; } /** * 创建znode结点 * @param path 结点路径 * @param data 结点数据 * @return true 创建结点成功 false表示结点存在 * @throws Exception */ public boolean addZnodeData(String path,String data,CreateMode mode) { try { if(zookeeper.exists(path, true) == null){ zookeeper.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, mode); return true; } } catch (KeeperException | InterruptedException e) { throw new RuntimeException("创建znode:"+path+"出现问题!!",e); } System.out.println("znode"+path+"结点已存在"); return false; } /** * 创建永久znode结点 * @param path 结点路径 * @param data 结点数据 * @return true 创建结点成功 false表示结点存在 * @throws Exception */ public boolean addPZnode(String path,String data) { return addZnodeData(path,data,CreateMode.PERSISTENT); } /** * 创建临时znode结点 * @param path 结点路径 * @param data 结点数据 * @return true 创建结点成功 false表示结点存在 * @throws Exception */ public boolean addZEnode(String path,String data) { return addZnodeData(path,data,CreateMode.EPHEMERAL); } /** * 修改znode * @param path 结点路径 * @param data 结点数据 * @return 修改结点成功 false表示结点不存在 */ public boolean updateZnode(String path,String data){ try { Stat stat=null; if((stat=zookeeper.exists(path, true))!=null){ zookeeper.setData(path, data.getBytes(), stat.getVersion()); return true; } } catch (KeeperException | InterruptedException e) { throw new RuntimeException("修改znode:"+path+"出现问题!!",e); } return false; } /** * * 删除结点 * @param path 结点 * @return true 删除键结点成功 false表示结点不存在 */ public boolean deleteZnode(String path){ try { Stat stat=null; if((stat=zookeeper.exists(path, true))!=null){ List<String> subPaths=zookeeper.getChildren(path, false); if(subPaths.isEmpty()){ zookeeper.delete(path, stat.getVersion()); return true; }else{ for (String subPath : subPaths) { deleteZnode(path+"/"+subPath); } } } } catch (InterruptedException | KeeperException e) { throw new RuntimeException("删除znode:"+path+"出现问题!!",e); } return false; } /** * 取到结点数据 * @param path 结点路径 * @return null表示结点不存在 否则返回结点数据 */ public String getZnodeData(String path){ String data=null; try { Stat stat=null; if((stat=zookeeper.exists(path, true))!=null){ data=new String(zookeeper.getData(path, true, stat)); }else{ System.out.println("znode:"+path+",不存在"); } } catch (KeeperException | InterruptedException e) { throw new RuntimeException("取到znode:"+path+"出现问题!!",e); } return data; }}
阅读全文
0 0
- Zookeeper工具类的封装
- 封装的工具类
- zookeeper实战与源码分析----用ZooKeeper封装自己的客户端工具
- 工具类的封装-sharePreference的封装
- 工具类的封装--Log封装
- 工具类的封装--SharedPreferences封装
- solrj工具类的封装
- 封装的JDBC工具类
- JDBC工具类的封装
- Ehcache封装的工具类
- 分页的封装工具类
- 封装的log工具类
- Hibernate4工具类的封装
- 封装的HttpClient工具类
- redis的工具类封装
- 封装SharedPreferences的工具类
- JsonUtil工具类的封装
- 封装的RedisUtil工具类
- Linux 下的 Python 多版本管理(pyenv)
- HDU 6058 Kanade's sum (链表)
- js 数组
- bzoj 2431: [HAOI2009]逆序对数列
- Java多线程学习(吐血超详细总结)
- Zookeeper工具类的封装
- 机器学习降维算法二:LDA(Linear Discriminant Analysis)
- 后缀数组学习笔记
- 笔记13--js基础知识-函数
- CentOS7安装crtmpserver搭建在线直播平台(crtmpserver开机启动、rtmpd、rtmpserver、rtmp直播)
- CAD编辑之创建表格、新建空白图纸以及创建和粘贴图块
- Third Write
- Java多线程基础--05之 线程等待与唤醒
- 如何动态的制作级联菜单(上)