博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper入门(七)之Java连接Zookeeper
阅读量:470 次
发布时间:2019-03-06

本文共 4079 字,大约阅读时间需要 13 分钟。

 

Java操作Zookeeper很简单,但是前提要把包导对。

关于Zookeeper的Linux环境搭建可以参考我的这篇博客:

下面进入正题:

一、导入依赖

4.0.0
cn.zookeeper
zookeeper_demo
0.0.1-SNAPSHOT
org.apache.zookeeper
zookeeper
3.4.6

 

二、编写工具类代码和测试代码

package zookeeper_demo;import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;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.data.Stat;public class BaseZookeeper implements Watcher{    private ZooKeeper zookeeper;    /**     * 超时时间     */   private static final int SESSION_TIME_OUT = 2000;   private CountDownLatch countDownLatch = new CountDownLatch(1);      public void process(WatchedEvent event) {      if (event.getState() == KeeperState.SyncConnected) {         System.out.println("Watch received event");         countDownLatch.countDown();      }   }     /**连接zookeeper    * @param host    * @throws Exception    */   public void connectZookeeper(String host) throws Exception{      zookeeper = new ZooKeeper(host, SESSION_TIME_OUT, this);      countDownLatch.await();      System.out.println("zookeeper connection success");   }     /**    * 创建节点    * @param path    * @param data    * @throws Exception    */   public String createNode(String path,String data) throws Exception{      return this.zookeeper.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);   }     /**    * 获取路径下所有子节点    * @param path    * @return    * @throws KeeperException    * @throws InterruptedException    */   public List
getChildren(String path) throws KeeperException, InterruptedException{ List
children = zookeeper.getChildren(path, false); return children; } /** * 获取节点上面的数据 * @param path 路径 * @return * @throws KeeperException * @throws InterruptedException */ public String getData(String path) throws KeeperException, InterruptedException{ byte[] data = zookeeper.getData(path, false, null); if (data == null) { return ""; } return new String(data); } /** * 设置节点信息 * @param path 路径 * @param data 数据 * @return * @throws KeeperException * @throws InterruptedException */ public Stat setData(String path,String data) throws KeeperException, InterruptedException{ Stat stat = zookeeper.setData(path, data.getBytes(), -1); return stat; } /** * 删除节点 * @param path * @throws InterruptedException * @throws KeeperException */ public void deleteNode(String path) throws InterruptedException, KeeperException{ zookeeper.delete(path, -1); } /** * 获取创建时间 * @param path * @return * @throws KeeperException * @throws InterruptedException */ public String getCTime(String path) throws KeeperException, InterruptedException{ Stat stat = zookeeper.exists(path, false); return String.valueOf(stat.getCtime()); } /** * 获取某个路径下孩子的数量 * @param path * @return * @throws KeeperException * @throws InterruptedException */ public Integer getChildrenNum(String path) throws KeeperException, InterruptedException{ int childenNum = zookeeper.getChildren(path, false).size(); return childenNum; } /** * 关闭连接 * @throws InterruptedException */ public void closeConnection() throws InterruptedException{ if (zookeeper != null) { zookeeper.close(); } } public static void main(String[] args) throws Exception { BaseZookeeper zookeeper = new BaseZookeeper(); zookeeper.connectZookeeper("192.168.126.128:2181"); List
children = zookeeper.getChildren("/"); System.out.println(children); }}

 

完成以上两步,即可完成Java连接并对Zookeeper的简单操作。

 

转载地址:http://omobz.baihongyu.com/

你可能感兴趣的文章