zkClient操作
2017-05-26 本文已影响340人
先生_吕
zkClient在原生API的基础上进行了封装,简化了zookeeper的复杂性。
另外可以参照:http://www.cnblogs.com/shengkejava/p/5633801.html
创建客户端方法:ZKClient(Arguments)
参数1:zkServers,zookeeper服务器地址,用“,”分隔。
参数2:sessionTimeout,会话超时时间,单位毫秒,默认为30000ms。
参数3:connectionTimeout,连接超时时间。
参数4:IZkConnection接口的实现类。
参数5:zkSerializer,自定义序列化实现。
注意:出来添加zookeeper的包还有引入zkClient的包
【代码】
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection;
import org.apache.zookeeper.CreateMode;
/**
*
* @author lvfang
*
*
* zkClient在原生API的基础上进行了封装,简化了zookeeper的复杂性。
* 不要开发者自己手动创建watcher
*
*/
public class ZkClientTest {
// zookeeper地址
static final String CONNECT_ARRD = "192.168.1.201:2181";
// 超时时间
static final int SESSION_OUTTIME = 5000;
public static void main(String[] args) {
ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ARRD),SESSION_OUTTIME);
/**
* 添加
*/
zkClient.create("/testZkclient", "zkclient_Test", CreateMode.EPHEMERAL);
zkClient.createPersistent("/testZkclient/aaa");// 持久化节点创建(递归创建)
zkClient.createEphemeral("");// 临时节点创建
/**
* 删除
*/
zkClient.delete("/testZkclient");// 删除节点
zkClient.deleteRecursive("/testZkclient");// 递归删除
/**
* 修改节点数据
*/
zkClient.writeData("/super/c1", "新内容"); // 修改指定节点的值 (写数据)
System.out.println(zkClient.readData("/super/c1"));// 读数据
/**
* 是否存在
*/
System.out.println(zkClient.exists("/super/c1")); // 判断指定节点是否存在
/**
* 设置path和data,并读取子节点和每个节点的内容
*/
zkClient.createPersistent("/super", "1234"); // 创建并设置节点的值
zkClient.createPersistent("/super/c1", "内容一");
zkClient.createPersistent("/super/c2", "内容二");
List<String> children = zkClient.getChildren("/super");
for (String child : children) {
System.out.print(child + ":");
String childPath = "/super/" + child;
String data = zkClient.readData(childPath); // 读取指定节点的值
System.out.println(data);
}
zkClient.close();
}
}