zkClient在原生API的基礎(chǔ)上進(jìn)行了封裝倒彰,簡化了zookeeper的復(fù)雜性捷绑。
另外可以參照:http://www.cnblogs.com/shengkejava/p/5633801.html
創(chuàng)建客戶端方法:ZKClient(Arguments)
參數(shù)1:zkServers,zookeeper服務(wù)器地址欠橘,用“,”分隔。
參數(shù)2:sessionTimeout,會(huì)話超時(shí)時(shí)間租谈,單位毫秒,默認(rèn)為30000ms捆愁。
參數(shù)3:connectionTimeout割去,連接超時(shí)時(shí)間。
參數(shù)4:IZkConnection接口的實(shí)現(xiàn)類昼丑。
參數(shù)5:zkSerializer呻逆,自定義序列化實(shí)現(xiàn)。
注意:出來添加zookeeper的包還有引入zkClient的包
【代碼】
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection;
import org.apache.zookeeper.CreateMode;
/**
*
* @author lvfang
*
*
* zkClient在原生API的基礎(chǔ)上進(jìn)行了封裝菩帝,簡化了zookeeper的復(fù)雜性咖城。
* 不要開發(fā)者自己手動(dòng)創(chuàng)建watcher
*
*/
public class ZkClientTest {
// zookeeper地址
static final String CONNECT_ARRD = "192.168.1.201:2181";
// 超時(shí)時(shí)間
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");// 持久化節(jié)點(diǎn)創(chuàng)建(遞歸創(chuàng)建)
zkClient.createEphemeral("");// 臨時(shí)節(jié)點(diǎn)創(chuàng)建
/**
* 刪除
*/
zkClient.delete("/testZkclient");// 刪除節(jié)點(diǎn)
zkClient.deleteRecursive("/testZkclient");// 遞歸刪除
/**
* 修改節(jié)點(diǎn)數(shù)據(jù)
*/
zkClient.writeData("/super/c1", "新內(nèi)容"); // 修改指定節(jié)點(diǎn)的值 (寫數(shù)據(jù))
System.out.println(zkClient.readData("/super/c1"));// 讀數(shù)據(jù)
/**
* 是否存在
*/
System.out.println(zkClient.exists("/super/c1")); // 判斷指定節(jié)點(diǎn)是否存在
/**
* 設(shè)置path和data茬腿,并讀取子節(jié)點(diǎn)和每個(gè)節(jié)點(diǎn)的內(nèi)容
*/
zkClient.createPersistent("/super", "1234"); // 創(chuàng)建并設(shè)置節(jié)點(diǎn)的值
zkClient.createPersistent("/super/c1", "內(nèi)容一");
zkClient.createPersistent("/super/c2", "內(nèi)容二");
List<String> children = zkClient.getChildren("/super");
for (String child : children) {
System.out.print(child + ":");
String childPath = "/super/" + child;
String data = zkClient.readData(childPath); // 讀取指定節(jié)點(diǎn)的值
System.out.println(data);
}
zkClient.close();
}
}