import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; import java.util.concurrent.CountDownLatch; /** * @author likexin * @date 2019/04/15 */ public class ZKHelper implements Watcher { public static ZooKeeper zk = null; private CountDownLatch countDownLatch = new CountDownLatch(1); public void process(WatchedEvent watchedEvent) { if (watchedEvent.getState() == Event.KeeperState.SyncConnected) { countDownLatch.countDown(); } } /** * 创建连接 * @param host */ public void connectZookeeper(String host) { try { zk = new ZooKeeper(host, 2000, this); countDownLatch.await(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } /** * 注册节点 * @param path 节点的路径 */ public void regist(String path) { try { zk.create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } /** * 修改节点的内容 * @param path 节点路径 * @param data */ public void updateNodeData(String path, String data) { try { zk.setData(path, data.getBytes(), -1); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } /** * 获取数据 * @param path 节点路径 * @return */ public String getData(String path) { Stat stat = new Stat(); String data = null; try { data = new String(zk.getData(path, true, stat)); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } return data; } /** * 关闭连接 */ public void close() { try { zk.close(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { ZKHelper zkHelper = new ZKHelper(); zkHelper.connectZookeeper("172.0.0.1"); zkHelper.regist("/PATH/DATA"); zkHelper.updateNodeData("/PATH/DATA", "Love"); String data = zkHelper.getData("/PATH/DATA"); System.out.println(data); zkHelper.close(); } }
JAVA和Zookeeper交互的初级代码
最新推荐文章于 2024-07-16 16:49:54 发布