Zookeeper eclipse plugin
eclipse 当做client连接zookeerper
“help” =>"Install new software..."
zookeeper-plugin - http://www.massedynamic.org/eclipse/updates/
安装好后
“Window”=> "Show View" =>"Zookeeper 3.2.2 Explorer"
填入主机和端口号连接即可连上zookeeper
需要导入的jar包:
zookeeper-3.4.13.jar
zookeeper-3.4.13/lib/*.jar
package com.hust; import java.util.List; import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.ZooKeeper.States; import org.apache.zookeeper.data.Stat; public class ZkClient { public static void main(String[] args) { testBase1(); testBase2(); testBase3(); testWatcher(); } private static void testWatcher() { System.out.println("----- testWatcher()------"); String path = "/testWatcher"; try { ZooKeeper zk = new ZooKeeper("10.121.63.240:2181", 5000, null); String temp = zk.create(path, "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); zk.close(); } catch (Exception e) { e.printStackTrace(); } } private static void testBase1() { System.out.println("----- testBase1()------"); String path = "/temp"; try { ZooKeeper zk = new ZooKeeper("10.121.63.240:2181", 5000, null); String temp = zk.create(path, "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); zk.close(); } catch (Exception e) { e.printStackTrace(); } } private static void testBase2() { System.out.println("----- testBase2()------"); final String path = "/caoming"; try { CountDownLatch sampleLatch = new CountDownLatch(1); Watcher sampleWatcher = new ConnectedWatcher(sampleLatch); ZooKeeper zk = new ZooKeeper("10.121.63.208:2181", 5000, sampleWatcher); // 只有当ZK链接成功(状态为 SyncConnected)时,此函数调用才结束 waitUntilConnected(zk, sampleLatch); // 接下来就可以继续ZK访问了,避免因为ZK未连接成功时的访问出错 System.out.println("1111111"); Stat stat = zk.exists(path, null); System.out.println("2222"); if (null == stat) { System.out.println("节点不存在"); } else { System.out.println("节点存在"); byte[] data = zk.getData(path, false, null); System.out.println("节点内容:" + new String(data)); zk.delete(path, -1);// 第二个参数代表节点版本 -1代表当前版本自己去获得版本 } String temp = zk.create(path, "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); // 返回当前节点的详细信息 Stat data = zk.setData(path, "123456".getBytes(), -1); System.out.println("data:" + data); zk.close(); } catch (Exception e) { e.printStackTrace(); } } private static void testBase3() { System.out.println("----- testBase3()------"); String path = "/temp"; try { ZooKeeper zk = new ZooKeeper("10.121.63.240:2181", 5000, null); Stat stat = zk.exists(path, null); if (null != stat) { System.out.println(path + " exists."); rmrPath(zk, path); } String temp = zk.create(path, "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); temp = zk.create(path + "/a", "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); temp = zk.create(path + "/b", "caoming-data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(temp); zk.close(); } catch (Exception e) { e.printStackTrace(); } } public static void waitUntilConnected(ZooKeeper testZooKeeper, CountDownLatch testLatch) { if (testZooKeeper.getState() == States.CONNECTING) { try { testLatch.await(); } catch (InterruptedException err) { System.out.println("Latch exception"); } } } static class ConnectedWatcher implements Watcher { private CountDownLatch connectedLatch; ConnectedWatcher(CountDownLatch connectedLatch) { // CountDownLatch实例初始化时设为1即可 this.connectedLatch = connectedLatch; } @Override public void process(WatchedEvent event) { if (event.getState() == KeeperState.SyncConnected) { connectedLatch.countDown();/* ZK连接成功时,计数器由1减为0 */ } } } public static void rmrPath(ZooKeeper zk, String path) throws Exception { delPath(zk, path); zk.delete(path, -1); } public static void delPath(ZooKeeper zk, String path) throws Exception { List<String> paths = zk.getChildren(path, false); System.out.println(paths.toString()); for (String p : paths) { delPath(zk, path + "/" + p); System.out.println(path + "/" + p); } for (String p : paths) { zk.delete(path + "/" + p, -1); } } }

浙公网安备 33010602011771号