黄飞鸿
2017-06-29 20:31:50
原
Java zookeeper开发实例
1、安装zookeeper
下载zk http://archive.cloudera.com/cdh5/cdh/5/
配置文件
tickTime=2000 initLimit=10 syncLimit=5 # zk数据保存目录 dataDir=/usr/local/zookeeper/data clientPort=2181
启动:
bin/zkServer.sh start
客户端命令行链接:
bin/zkCli.sh
2、拷贝zookeeper下的jar包,到应用程序,并使用maven引入相关jar包
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5-cdh5.10.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/zookeeper-3.4.5-cdh5.10.0.jar</systemPath> </dependency>
java 代码
import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.EventType; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ZookeeperContext { protected static Logger logger = LoggerFactory.getLogger("zk"); public final int SESSION_TIME_OUT = 2000; public ZooKeeper zk; /** * 判断zk的链接链接状态 * */ public boolean isConnected(){ return zk.getState() == ZooKeeper.States.CONNECTED; } /** * 创建zk链接 * **/ public ZookeeperContext(String connectString) { try { /** * connectString 链接zookeeper的Ip和端口,多个用逗号隔开例如: * 10.0.0.104:2181,10.0.0.105:2181 sessionTimeout * 客户端和zookeeper链接断开后,数据最长保存的时间 watcher 监控回调,服务器数据修改会回调 */ zk = new ZooKeeper(connectString, SESSION_TIME_OUT, new ZookeeperWatcher()); } catch (Exception e) { e.printStackTrace(); } } /** * zk监听,如果服务器端有什么变化到这里接收 * 并继续添加监听 * */ public class ZookeeperWatcher implements Watcher { @Override public void process(WatchedEvent event) { try { if(null != event.getPath()){ System.out.println( event ); if(event.getType() == EventType.NodeChildrenChanged){ zk.getChildren(event.getPath(), true) ; }else{ zk.getData(event.getPath(), true, null) ; } } } catch (Exception e) { e.printStackTrace(); } } } /** * 在zk创建数据 * */ public void setData(String path,byte[]data , CreateMode createMode){ try { if(zk.exists(path, false) == null){ zk.create(path, data, Ids.OPEN_ACL_UNSAFE, createMode) ; }else{ zk.setData(path,data,-1); } zk.getChildren(path, true) ; } catch (Exception e) { logger.error("setData", e ); } } public static void main(String[] args)throws Exception { ZookeeperContext context = new ZookeeperContext("10.0.0.104:2181"); while (!context.isConnected()) { Thread.sleep(3000); } context.setData("/root", "1".getBytes(),CreateMode.PERSISTENT); context.setData("/root/hpgary", "gg".getBytes() , CreateMode.EPHEMERAL); System.err.println("eee"); System.in.read() ; } }
项目运行截图:
猜你喜欢
- JAVAWEB新手学堂代码HelloWeb
- java NIO简单聊天对话实例demo分享
- ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架
- Java 模拟WebQQ3.0
- Java开发小工具(集合遍历导出等方法):针对任何项目文件夹,可以递归遍历文件夹中的任何后缀名的文件,提取其中的中文
- 基于Java AWT语言的一款精致写字板(功能齐全)
- java项目常用开发工具类
- JAVA递归算法demo实例
- java递归的小例子
- java bean PropertyDescriptor类的使用
- java ScheduledThreadPoolExcutor使用实例
- java map用法实例
请下载代码后再发表评论
文件名:access.zip,文件大小:1237.514K
下载
- /
- /access
- /access/lib
- /access/lib/zookeeper-3.4.5-cdh5.10.0.jar
- /access/pom.xml
- /access/src
- /access/src/main
- /access/src/main/java
- /access/src/main/java/com
- /access/src/main/java/com/hpgary
- /access/src/main/java/com/hpgary/access
- /access/src/main/java/com/hpgary/zookeeper
- /access/src/main/java/com/hpgary
- /access/src/main/java/com
- /access/src/main/java
- /access/src/main
- /access/lib
- /access


cgp0219 LV6
2020年10月27日
crazyBear2020 LV3
2020年1月15日
gmhaizn LV10
2018年3月30日
liangzai123 LV18
2018年3月21日
kildee LV11
2017年7月6日

流水本无情 LV9
2024年3月13日
2602275348 LV12
2022年3月31日
yang12 LV1
2021年6月15日
sunbing
2021年3月29日
暂无贡献等级
1529860026 LV24
2020年11月26日
liyiming LV4
2020年8月6日
943054597
2020年8月6日
暂无贡献等级
guaixia163 LV13
2020年7月13日
lcjssm LV5
2020年7月5日
夜上清元 LV8
2020年6月18日