您的位置:首页 > 其它

ZooKeeper实战(四)-ZooKeeper API使用

2016-05-11 20:06 405 查看
本篇文章主要介绍如何使用ZooKeeper官方API来操作ZooKeeper。

maven依赖

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


ZooKeeper API

构造ZooKeeper实例

我们主要使用的是ZooKeeper 类来访问ZooKeeper 并执行一系列操作。

String hostPort = "localhost:2181,localhost:2182,localhost:2183";
int sessionTimeout = 3000;
String path = "/test/app1";

ZooKeeper zk = new ZooKeeper(hostPort, sessionTimeout, new Watcher() {

@Override
public void process(WatchedEvent event) {
String path = event.getPath();
System.out.println("watch:"+event.getType()+",path:"+path);

}
});


新建znode节点

public void create(){

String data = "hello world!";

System.out.println("create data:"+data);

try {
String result = zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println(result);
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}


get znode节点数据

public void get(){

String result = null;
try {
byte[] bytes = zk.getData(path, null, null);
result = new String(bytes);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("read data:"+result);
}


set znode节点数据

public void set(){

String data = "hello ricky!";

System.out.println("set data:"+data);
try {
zk.setData(path, data.getBytes(), -1);
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}


delete znode

public void delete(){

try {
zk.delete(path, -1);
} catch (InterruptedException | KeeperException e) {
e.printStackTrace();
}
}


close ZooKeeper

public void close(){

try {
zk.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}


完整代码如下:

package com.ricky.codelab.zookeeper;

import java.io.IOException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;

public class ZKCrudDemo {

private String hostPort = "localhost:2181,localhost:2182,localhost:2183";
private int sessionTimeout = 3000;
private String path = "/test/app1";

private ZooKeeper zk;

public static void main(String[] args) {

try {
new ZKCrudDemo().test();
} catch (IOException e) {
e.printStackTrace();
}

}

public void test() throws IOException{

zk = new ZooKeeper(hostPort, sessionTimeout, new Watcher() {

@Override
public void process(WatchedEvent event) {
String path = event.getPath();
System.out.println("watch:"+event.getType()+",path:"+path);

}
});

// create();
// get();
//
// set();
get();

delete();
get();

close();
}

public void create(){ String data = "hello world!"; System.out.println("create data:"+data); try { String result = zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(result); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }

public void get(){

String result = null;
try {
byte[] bytes = zk.getData(path, null, null);
result = new String(bytes);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("get data:"+result);
}

public void set(){ String data = "hello ricky!"; System.out.println("set data:"+data); try { zk.setData(path, data.getBytes(), -1); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }

public void delete(){ try { zk.delete(path, -1); } catch (InterruptedException | KeeperException e) { e.printStackTrace(); } }

public void close(){ try { zk.close(); } catch (InterruptedException e) { e.printStackTrace(); } }
}


参考资料:

https://zookeeper.apache.org/doc/trunk/javaExample.html

http://zookeeper.apache.org/doc/r3.4.8/api/org/apache/zookeeper/ZooKeeper.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zookeeper api