1、ZooKeeper API 简介
ZooKeeper API 共包含 5 个包,分别为:
org.apache.zookeeper ;
org.apache.zookeeper.data ;
org.apache.zookeeper.server ;
org.apache.zookeeper.server.quorum ;
org.apache.zookeeper.server.upgrade ;
其中 org.apache.zookeeper 包含 ZooKeeper 类,它我们编程时最常用的类文件。
这个类是 ZooKeeper 客户端库的主要类文件。如果要使用 ZooKeeper 服务,应用程序首先必须创建一个Zookeeper 实例,这时就需要使用此类。一旦客户端和 ZooKeeper 服务建立起连接, ZooKeeper 系统将会分配给此连接回话一个 ID 值,并且客户端将会周期地向服务器发送心跳来维持会话的连接。只要连接有效,客户端就可以调用 ZooKeeper API 来做相应的处理。
pom.xml:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Before;
import org.junit.Test;
/**
* <p>功能描述:</p>
* <p>Company: 上海******有限公司</p>
* @author Jeff
* @version 1.0 2016年1月20日
*/
public class ZookeeperTest {
//设置会话超时时间,设置与系统默认时间一致
private static final int SESSION_TIMEOUT = 30000;
private final String CONNECTSTR = "192.168.0.233:2181";
//创建zookeeper实例
ZooKeeper zk;
//创建Watcher实例
Watcher wh = new Watcher(){
public void process(org.apache.zookeeper.WatchedEvent event){
System.out.println(event.toString());
}
};
@Before
public void init() throws IOException{
System.out.println("....zk init().....");
zk = new ZooKeeper(CONNECTSTR, SESSION_TIMEOUT, wh);
}
@Test
public void zkService() throws IOException,KeeperException, InterruptedException{
System.out.println("create ZooKeeper node ...... ");
zk.create("/zoo1", "panda,monkey,tigger".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("/zoo1 node is exists:" + zk.exists("/zoo1", false));
System.out.println("zk get data:"+new String(zk.getData("/zoo1", false, null)));
System.out.println("updateing zk data......");
zk.setData("/zoo1", "pig,cow,duck".getBytes(), -1);
System.out.println("update result:"+new String(zk.getData("/zoo1", false, null)));
System.out.println("deleteing znode ......");
zk.delete("/zoo1", -1);
System.out.println("/zoo1 node is exists:" + zk.exists("/zoo1", false));
this.zkClose();
}
public void zkClose() throws InterruptedException{
zk.close();
}
}
zookeeper3.4.7API地址:http://zookeeper.apache.org/doc/r3.4.7/api/index.html