package com.hpgary.zookeeper; 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 { System.out.println( event ); if(null != event.getPath()){ 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() ; } }

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日