Zookeeper系列3---Curator框架對zookeeper進行節點操作

Curator框架對zookeeper進行節點操作

https://github.com/Netflix/curator

http://curator.apache.org/

Java中可以利用Curator框架進行對zookeeper的相關操作

    <dependencies>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.collections</groupId>
            <artifactId>google-collections</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

操作節點的代碼:

    @Test
    public void createNode() throws Exception {
        //要連接的zookeeper的所在虛擬機路徑
        String connString = "node01:2181,node02:2181,node03:2181";
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 3);
        //獲取客戶端對象
        CuratorFramework client = CuratorFrameworkFactory.newClient(connString, retryPolicy);
        //通過客戶端對象開啓客戶端操作
        client.start();
        //創建永久節點
        client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/createNode03");
        //修改節點數據
        client.setData().forPath("/createNode03", "hello".getBytes());
        //查詢節點數據
        byte[] bytes = client.getData().forPath("/createNode03");
        System.out.println(new String(bytes));
        client.close();
    }

設置監聽的代碼:

    @Test
    public void myWatch() throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181", new ExponentialBackoffRetry(3000, 3));
        client.start();
        //設置節點的TreeCache
        TreeCache treeCache = new TreeCache(client, "/createNode03");
        //通過匿名內部類設置監聽
        treeCache.getListenable().addListener(new TreeCacheListener() {
            @Override
            public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {
                GetDataBuilder data = client.getData();
                if(data != null){
                    switch (event.getType()){
                        case NODE_ADDED:
                            System.out.println("添加節點");
                            break;
                        case NODE_UPDATED:
                            System.out.println("更新節點數據");
                            break;
                        //...
                        default:break;
                    }
                }
            }
        });
        //開始執行監聽
        treeCache.start();
        Thread.sleep(5000000);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章