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,會話超時時間,單位毫秒,默認(rèn)為30000ms。
參數(shù)3:connectionTimeout,連接超時時間。
參數(shù)4:IZkConnection接口的實現(xiàn)類。
參數(shù)5:zkSerializer,自定義序列化實現(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ā)者自己手動創(chuàng)建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");// 持久化節(jié)點創(chuàng)建(遞歸創(chuàng)建)
zkClient.createEphemeral("");// 臨時節(jié)點創(chuàng)建
/**
* 刪除
*/
zkClient.delete("/testZkclient");// 刪除節(jié)點
zkClient.deleteRecursive("/testZkclient");// 遞歸刪除
/**
* 修改節(jié)點數(shù)據(jù)
*/
zkClient.writeData("/super/c1", "新內(nèi)容"); // 修改指定節(jié)點的值 (寫數(shù)據(jù))
System.out.println(zkClient.readData("/super/c1"));// 讀數(shù)據(jù)
/**
* 是否存在
*/
System.out.println(zkClient.exists("/super/c1")); // 判斷指定節(jié)點是否存在
/**
* 設(shè)置path和data,并讀取子節(jié)點和每個節(jié)點的內(nèi)容
*/
zkClient.createPersistent("/super", "1234"); // 創(chuàng)建并設(shè)置節(jié)點的值
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é)點的值
System.out.println(data);
}
zkClient.close();
}
}