• Zookeeper入门(七)之Java连接Zookeeper


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

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

    下面进入正题:

    一、导入依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>cn.zookeeper</groupId>
      <artifactId>zookeeper_demo</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
    <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
    
    <dependencies>
        <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
    </dependencies>
    </project>

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

    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<String> getChildren(String path) throws KeeperException, InterruptedException{
          List<String> 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<String> children = zookeeper.getChildren("/");
           System.out.println(children);
       }
    }
    
     
    
     
    
     

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

  • 相关阅读:
    持续集成系统敏捷开发的基石
    云计算对IT产业的影响
    类封装的驱动程序
    竹林蹊径:深入浅出Windows驱动开发
    云计算的SPI服务模型
    什么是云计算
    多态
    我们需要什么样的计算
    电子工业的发展也带动了电子设计自动化技术
    云计算的部署模型
  • 原文地址:https://www.cnblogs.com/youcong/p/9676198.html
Copyright © 2020-2023  润新知