ZKClient操作zookeeper


  前面簡單研究了curator的使用,下面簡單研究zkclient的使用。

1.創建連接

    private static final String CONNECT_ADDR = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183";

    private static ZkClient geneClient() {
        return new ZkClient(new ZkConnection(CONNECT_ADDR), 10000);
    }

創建客戶端的方法: ZKClient(Arguments)
參數1:zkServer zookeeper服務器的地址,用","分割
參數2:sessionTimeout超時回話,為毫秒,默認是30000ms
參數3:connectionTimeOut 連接超時會話
參數4:IZKConnection接口的實現類
參數5:zkSerializer 茲定於序列化實現

2.簡單操作

1.創建節點

  可以遞歸創建節點,只不過遞歸創建的節點值為空。

        // 創建節點
        geneClient.create("/test1", "sssss", CreateMode.PERSISTENT);
        // 遞歸創建節點,只是節點的值為空
        geneClient.createPersistent("/test2/t22", true);

結果

 創建方法如下:

 2.刪除節點

  可以遞歸刪除節點。

        boolean delete = geneClient.delete("/test1");
        // 遞歸刪除
        boolean deleteRecursive = geneClient.deleteRecursive("/test2");

 3.獲取節點內容和遍歷子節點

        Object readData = geneClient.readData("/test1");
        System.out.println(readData);

        List<String> list = geneClient.getChildren("/test2");
        for (String p : list) {
            System.out.println(p);
            String rp = "/test2/" + p;
            String data = geneClient.readData(rp);
            System.out.println("節點為:" + rp + ",內容為: " + data);
        }

 4.判斷節點是否存在

    boolean exists = geneClient.exists("/test1");
    System.out.println(exists);

5.修改節點

        Stat writeData = geneClient.writeData("/test1", "cccc");
        System.out.println(writeData);
        System.out.println(geneClient.readData("/test1"));

3.監聽節點

1.監聽節點變化

        geneClient.subscribeDataChanges("/test1", new IZkDataListener() {

            @Override
            public void handleDataDeleted(String dataPath) throws Exception {
                System.out.println("節點被刪除");
            }

            @Override
            public void handleDataChange(String dataPath, Object data) throws Exception {
                System.out.println(dataPath + "\t" + data);
            }
        });

 

2.監聽子節點變化(只能監聽字節點,子孫節點無效)

        geneClient.subscribeChildChanges("/test1", new IZkChildListener() {
            @Override
            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
                System.out.println(parentPath+"\t");
                for(String s:currentChilds){
                    System.out.println(s);
                }
            }
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM