黄飞鸿
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() ; } }
项目运行截图:
猜你喜欢
请下载代码后再发表评论
文件名: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日

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日
大朗丶起来喝药了 LV4
2020年5月8日