ZooKeeper還爲客戶端提供了Java API編程接口的方式。API接口主要是ZooKeeper類中的方法,下面列舉幾個經常使用的客戶端操做的Java代碼示例。node
一、create編程
建立ZooKeeper路徑節點,參數需提供路徑名稱和路徑關聯數據。對應create命令。服務器
示例代碼以下:session
ZooKeeper zk= new ZooKeeper("127.0.0.1",SESSION_TIME,this); zk.create("/test","Hello".getBytes(), null, CreateMode.PERSISTENT); this |
二、刪除spa
刪除路徑,對應delete命令。接口
ZooKeeper zk= new ZooKeeper("127.0.0.1",SESSION_TIME,this);事件 zk.delete("/test", -1); ci |
三、getDataget
獲取路徑關聯數據。對應get命令。
ZooKeeper zk= new ZooKeeper("127.0.0.1",SESSION_TIME,this); String data = zk.getData("/test", false,null); |
四、setData
設置節點關聯數據。對應set命令。
ZooKeeper zk= new ZooKeeper("127.0.0.1",SESSION_TIME,this); zk.setData ("/test", "Welcome".getBytes(), -1); |
五、getChildren
獲取子節點路徑列表。對應ls命令。
ZooKeeper zk= new ZooKeeper("127.0.0.1",SESSION_TIME,this); List<String> list = zk.getChildren("/", false); |
六、Watcher
設置觀察者:
只要在實例化ZooKeeper類時指定Watcher實現便可實現ZooKeeper事件,Watcher實現只須要實現process接口方法便可。
示例代碼:
zk = new ZooKeeper(address, sessionTimeout, new Watcher() { // 監控全部被觸發的事件 public void process(WatchedEvent event) { System.out.println("觸發事件:" + event.getType()); } }); |
這段代碼監聽ZooKeeper全部變化,事件處理代碼是打印event類型。
WatchedEvent的屬性:
1)鏈接狀態
KeeperState keeperState = event.getState();
2)事件類型
EventType eventType = event.getType();
3)znode的路徑名稱
String path = event.getPath();
EventType有幾下幾種事件類型:
EventType.NodeCreated : 節點建立事件類型
EventType.NodeDeleted : 節點被刪除
EventType.NodeDataChanged : 節點被修改
EventType.None : 客戶端與服務器成功創建會話
EventType.NodeChildrenChanged : 子節點列表發生變動