package com.xzk.zk; import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch; public class ZkExample01 { private static final String connectString = "127.0.0.1:2181"; private static final int sessionTimeout = 5000; private static final CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) throws IOException, KeeperException, InterruptedException { ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() { public void process(WatchedEvent watchedEvent) { //获取与zk服务器连接的状态信息 Event.KeeperState keeperState = watchedEvent.getState(); //获取事件类型 Event.EventType type = watchedEvent.getType(); 如果是建立连接状态 if(Event.KeeperState.SyncConnected == keeperState){ if(Event.EventType.None == type){ //如果建立连接成功,则发送信号量,让后续阻塞的程序继续向下执行 countDownLatch.countDown(); out("zk---->建立连接成功"); } } } }); //进行阻塞 countDownLatch.await(); //创建持久节点 zk.create("/zxExample03","2340".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); out("创建zxExample01节点--->成功"); //获取该节点所存储的值 byte[] data = zk.getData("/zxExample03",false,null); out("获取节点zxExample03的值--->"+new String(data)); //修改节点的值,-1表示跳过版本检查,其他正数表示如果传入的版本号与当前版本号不一致,则修改不成功,删除是同样的道理。 zk.setData("/zxExample03", "2341change".getBytes(), -1); byte[] data1 = zk.getData("/zxExample03", false, null); out("获取节点zxExample03的值--->"+new String(data1)); //判断节点是否存在 out("判断节点zxExample03是否存在--->"+zk.exists("/zxExample03", false)); //删除节点 //zk.delete("/zxExample03", -1); //out(zk.exists("/zxExample03", false)); //释放资源 zk.close(); } public static void out(Object o){ System.out.println(o); } }
JAVA操作zookeeper(精简篇)
最新推荐文章于 2024-01-14 23:30:30 发布