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();
}
}