Java连接Zookeeper
Java操作Zookeeper很简单,但是前提要把包导对。
关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装
下面进入正题:
一、导入依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.zookeeper</groupId> <artifactId>zookeeper_demo</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --> <dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency> </dependencies> </project>
二、编写工具类代码和测试代码
package zookeeper_demo; 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 BaseZookeeper implements Watcher{ private ZooKeeper zookeeper; /** * 超时时间 */ private static final int SESSION_TIME_OUT = 2000; private CountDownLatch countDownLatch = new CountDownLatch(1); 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<String> getChildren(String path) throws KeeperException, InterruptedException{ List<String> 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(); } } public static void main(String[] args) throws Exception { BaseZookeeper zookeeper = new BaseZookeeper(); zookeeper.connectZookeeper("192.168.126.128:2181"); List<String> children = zookeeper.getChildren("/"); System.out.println(children); } }
完成以上两步,即可完成Java连接并对Zookeeper的简单操作。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
zkCli.sh对节点的增删改查
参考地址为:https://www.cnblogs.com/sherrykid/p/5813148.html 1.连接在 bin 目录下的 zkCli.sh 就是ZooKeeper客户端./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 客户端与ZooKeeper建立链接timeout:超时时间,单位毫秒r:只读模式,当节点坏掉的时候,还可以提供读服务示例:./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 Connecting to 127.0.0.1:21812018-09-19 16:48:35,332 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT2018-09-19 16:48:35,336 [myid:] - INFO [main:Environment@100] - Client envir...
- 下一篇
PDA车牌识别/手持机车牌识别SDK—应用处理
核心技术:Android车牌识别、ios车牌识别本地离线识别可保存车牌号码。方便,快捷,精准提高前端人员工作效率、增强C端用户产品体验价值。 目前,不仅是军用项目会用到PDA,很多民用项目使用PDA管理也越来越多了,随之我们的移动端车牌识别-即通过手机/iPad/PDA手持终端也针对市场做出了调整,不仅内置摄像头视频预览(扫一扫)模式。 代码简介: 拍摄规范 规范的拍摄有助于提高识别率 保持水平,尽量使车牌在画面中保持水平; 合理光照,拍摄时注意光照的影响,尽量避免反光和黑影; 避免倾斜,不要使拍摄角度倾斜过大,以免造成车牌严重变型; 聚焦清晰,避免图像模糊不清楚。 移动端车牌识别sdk系统优点: 1、识别速度快:高度优化的车牌定位和识别算法,识别时间≤50毫秒(200万图片)。 2、识别率:白天识别率≥99.7%;夜间识别率≥98%。 3、识别速度:单张图片识别时间≤50毫秒(200万图像)。 4、像素宽度:60-400像素宽度。 5、特征识别:车牌颜色、车标类型、车身颜色。 6、车牌类型:普通蓝牌、普通黄牌(单层)、双层黄牌、新式军车车牌、新式武警车牌、使馆车牌、农用车牌等各种规格...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范