1. 程式人生 > >java連線zookeeper實現zookeeper的基本操作

java連線zookeeper實現zookeeper的基本操作

Java服務端連線Zookeeper,進行節點資訊的獲取,管理…,整理成一個基本工具,

新增依賴:

<dependency>
   <
groupId>org.apache.zookeeper</groupId>
   <
artifactId>zookeeper</artifactId>
   <
version>3.3.6</version>
</
dependency>

package com;

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);
  
@Override
  
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 class Demo {

   
public static void main(String[] args) throws Exception {
       
BaseZookeeper zookeeper = new BaseZookeeper();
       
zookeeper.connectZookeeper("192.168.0.1:2181");

       
List<String> children = zookeeper.getChildren("/");
       
System.out.println(children);
   
}

}

相關推薦

MyBatis入門學習-連線oracle實現CURD基本操作

[TOC] ## 前言 本篇記錄使用mybatis連線oracle資料庫實現基本的CURD操作。 ## 匯入oracle庫 由於oracle收費, 因此maven沒有oracle庫包,需要我們自己匯入,可以手工匯入外部包,也可以將oracle的jar匯入到maven庫種。具體匯入步驟可以檢視[Mave

Zookeeper客戶端基本操作java實現——建立連線、建立節點、新增修改節點內容、獲取子節點、獲取節點資料、刪除節點

一、引入Zookeeper包,新增pom依賴 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper<

java連線zookeeper實現zookeeper基本操作

Java服務端連線Zookeeper,進行節點資訊的獲取,管理…,整理成一個基本工具, 新增依賴: <dependency>    <groupId>org.apache.zookeeper</groupId>    <art

2018-07-13期 Zookeeper客戶端基本操作【本人親自反復驗證通過分享】

RoCE 分享 自動刪除 ast state println await roc 可用 說明:本文檔主要給大家介紹ZK客戶端API基本操作一、新建Java工程1、New->Project->Java Project填寫JAVA工程名字,選擇JDK版本等2、為新建

Java程式碼實現列隊基本操作

Java實現列隊基本操作 佇列的定義: 佇列(Queue)是隻允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。 (1)允許刪除的一端稱為隊頭(Front)。 (2)允許插入的一端稱為隊尾(Rear)。 (3)當佇列中沒有元素時稱為空佇列。 (4)佇列

單鏈表實現及其基本操作

rate || == tac rgs 是否 targe param val import java.util.HashMap; import java.util.Scanner; import java.util.Stack; /** * *

java 對類型的基本操作小結

() sage PE nor .get eight getname valueof XML 1.json 字符串轉換成對象 SyncCarriageStatusDTO dto= JSON.parseObject(value,SyncCarriageStatusDTO.cla

JAVA 畫圖板實現基本畫圖功能+界面UI)一、界面實現

tor 做了 功能 分享圖片 重復 ble erase 選擇 width /*文章中用到的代碼只是一部分,需要源碼的可通過郵箱聯系我 [email protected]*/ 這段時間在學JAVA的swing界面開發,試著做了個畫圖板。實現了直線、曲線、噴槍、矩形、圓形、文字

JAVA 畫圖板實現基本畫圖功能+界面UI)二、功能實現及重繪實現

cos 博客 tint ext min click 代碼 hints 按鈕 上篇博客中介紹了界面的實現方法,在這篇博客中將對每個按鈕的功能的實現進行講解並介紹重繪 首先肯定要添加事件監聽機制了,那麽問題來了,事件源對象是誰?需要添加什麽方法?事件接口是什麽? 1、我們需要點

Java有關List的stream基本操作

case sign nor 方法 結果 獲取 bool import args 參考博客: https://www.jianshu.com/p/9fe8632d0bc2 Stream簡介 Java 8引入了全新的Stream API。這裏的Stream和I/O流不同,

JAVA連線SQL實現查詢資料

顯示所有學生程式碼 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html>

JAVA連線SQL實現更新資料

在程式碼中更新資料 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html>

JAVA連線SQL實現插入資料

         直接由程式碼來決定插入的資料。 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql

JAVA連線SQL實現刪除資料

刪除一條資料 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html> &l

二叉樹的基本實現基本操作

二叉樹的概念: 一棵二叉樹是結點的一個有限集合,該集合或者為空,或者是由一個根節點加上兩棵分別稱為左子樹和右子樹的二叉樹組成。 二叉樹的特點: 每個結點最多有兩棵子樹,即二叉樹不存在度大於2的結點 二叉樹的子樹有左右之分,其子樹的次序不能顛倒 二叉樹的五種形態:

二叉樹的連結實現基本操作(C++)

前言: 學習了棧和佇列後,我們接著在資料結構的海洋中遨遊。這時的我已經被各種棧和佇列折騰的快不行了,然而,當學習了樹之後,才發現自己還是太年輕,跟樹比起來,棧和佇列是那麼的和諧與友好。先來小試牛刀一把,看看最簡單的二叉樹是怎麼實現的: 二叉樹的實現: 二叉樹是節點的有限

Java的反射的一些基本操作

一個Java類被載入的時候,JVM會建立一個與之對應的Class類,這個類可以反映Java類的所有資訊。Class類只會載入一次,所有對應類的物件都是同一個Class類。 Class c = Class.forName(); //獲得類的Class類 Field

Java 連線 Mongodb 增刪改查操作

對於NoSQL並沒有一個明確的範圍和定義,但是他們都普遍存在下面一些共同特徵: 不需要預定義模式:不需要事先定義資料模式,預定義表結構。資料中的每條記錄都可能有不同的屬性和格式。當插入資料時,並不需要預先定義它們的模式。 無共享架構:相對於將所有資料儲存的儲

Java 中對Mongodb 的基本操作

HelloWorld程式   學習任何程式的第一步,都是編寫HelloWorld程式,我們也不例外,看下如何通過Java編寫一個HelloWorld的程式。   首先,要通過Java操作Mongodb,必須先下載Mongodb的Java驅動程式,可以在這裡下載。

線性表的實現及其基本操作

線性表的定義 線性表是最簡單最常用的一種資料結構,它是一種能在任意位置進行插入和刪除資料元素操作的、由n(n>=0)個相同資料元素組成的線性結構。 線性表的抽象資料型別 資料集合 線性表的資料集合可以表示為a0, a1, a2, a3, ……