ZooKeeper 使用 ZKClient 獲取子節點列表

ZkClient 是一個開源軟件,也託管在 github。它封裝了 zookeeper 原生 API。java

使用

先須要在 javaws 網站上下載 ZKClient 的 jar 包。git

import java.util.List;
import com.github.zkclient.IZkChildListener;
import com.github.zkclient.ZkClient;

public class Get_Children_Sample {
    public static void main(String[] args) throws Exception {
        
        String path = "/zookeeper-ch5";
        ZkClient zkClient = new ZkClient("202.201.*.*:2100", 5000);
        
        zkClient.subscribeChildChanges(path, new IZkChildListener(){
            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception{
                System.out.println(parentPath + " 's child changed, currentChilds:" + currentChilds);
            }
        });
        
        zkClient.createPersistent(path);
        Thread.sleep( 1000 );
        System.out.println(zkClient.getChildren(path));
        
        zkClient.createPersistent(path+"/c1");
        Thread.sleep( 1000 );
        
        zkClient.delete(path+"/c1");
        Thread.sleep( 1000 );
        zkClient.delete(path);
        Thread.sleep( Integer.MAX_VALUE);
    }
}

注意 ZkClient 中的 IP 地址應該和 /opt/zookeeper-3.4.6/conf/zoo.cfg 中配置的 IP 地址一致,且在 /opt/zookeeper-3.4.6/bin 目錄下啓動 zookeepergithub

./zkServer.sh start服務器

API 調用

調用 ZkClient create API 增長節點。網站

調用 ZkClient delete API 刪除節點。code

客戶端經過註冊相關的事件監聽來實現對 ZooKeeper 服務端事件的訂閱。使用以下API來進行監聽:htm

List<String> subscribeChildChange(String path, IZkChildListener listener)接口

訂閱的事件由 Listener 接口來處理:事件

public interface IZkChildListener(){
    public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception;
}

結果分析

打印結果get

/zookeeper-ch5 's child changed, currentChilds:[]
[]
/zookeeper-ch5 's child changed, currentChilds:[c1]
/zookeeper-ch5 's child changed, currentChilds:[]
/zookeeper-ch5 's child changed, currentChilds:null

調用 createPersistent(path) 會建立父節點 [],客戶端收到來自服務器的事件通知,打印 /zookeeper-ch5 's child changed, currentChilds:[]

而後添加 /c1 子節點,客戶端收到事件通知,打印。

相關文章
相關標籤/搜索