ZooKeeper实战(四)-ZooKeeper API使用
2016-05-11 20:06
405 查看
本篇文章主要介绍如何使用ZooKeeper官方API来操作ZooKeeper。
完整代码如下:
参考资料:
https://zookeeper.apache.org/doc/trunk/javaExample.html
http://zookeeper.apache.org/doc/r3.4.8/api/org/apache/zookeeper/ZooKeeper.html
maven依赖
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency>
ZooKeeper API
构造ZooKeeper实例
我们主要使用的是ZooKeeper 类来访问ZooKeeper 并执行一系列操作。String hostPort = "localhost:2181,localhost:2182,localhost:2183"; int sessionTimeout = 3000; String path = "/test/app1"; ZooKeeper zk = new ZooKeeper(hostPort, sessionTimeout, new Watcher() { @Override public void process(WatchedEvent event) { String path = event.getPath(); System.out.println("watch:"+event.getType()+",path:"+path); } });
新建znode节点
public void create(){ String data = "hello world!"; System.out.println("create data:"+data); try { String result = zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(result); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }
get znode节点数据
public void get(){ String result = null; try { byte[] bytes = zk.getData(path, null, null); result = new String(bytes); } catch (Exception e) { e.printStackTrace(); } System.out.println("read data:"+result); }
set znode节点数据
public void set(){ String data = "hello ricky!"; System.out.println("set data:"+data); try { zk.setData(path, data.getBytes(), -1); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }
delete znode
public void delete(){ try { zk.delete(path, -1); } catch (InterruptedException | KeeperException e) { e.printStackTrace(); } }
close ZooKeeper
public void close(){ try { zk.close(); } catch (InterruptedException e) { e.printStackTrace(); } }
完整代码如下:
package com.ricky.codelab.zookeeper;
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
public class ZKCrudDemo {
private String hostPort = "localhost:2181,localhost:2182,localhost:2183";
private int sessionTimeout = 3000;
private String path = "/test/app1";
private ZooKeeper zk;
public static void main(String[] args) {
try {
new ZKCrudDemo().test();
} catch (IOException e) {
e.printStackTrace();
}
}
public void test() throws IOException{
zk = new ZooKeeper(hostPort, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent event) {
String path = event.getPath();
System.out.println("watch:"+event.getType()+",path:"+path);
}
});
// create();
// get();
//
// set();
get();
delete();
get();
close();
}
public void create(){ String data = "hello world!"; System.out.println("create data:"+data); try { String result = zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(result); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }
public void get(){
String result = null;
try {
byte[] bytes = zk.getData(path, null, null);
result = new String(bytes);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("get data:"+result);
}
public void set(){ String data = "hello ricky!"; System.out.println("set data:"+data); try { zk.setData(path, data.getBytes(), -1); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } }
public void delete(){ try { zk.delete(path, -1); } catch (InterruptedException | KeeperException e) { e.printStackTrace(); } }
public void close(){ try { zk.close(); } catch (InterruptedException e) { e.printStackTrace(); } }
}
参考资料:
https://zookeeper.apache.org/doc/trunk/javaExample.html
http://zookeeper.apache.org/doc/r3.4.8/api/org/apache/zookeeper/ZooKeeper.html
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- Spark RDD API详解(一) Map和Reduce
- Spring Boot 开发微服务
- lwn拾遗:[sn3218 led drivers]-api解释-1
- 页面元素查找之Selectors API
- 一个小型js框架myJSFrame附API使用帮助
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- C#中设计、使用Fluent API
- Google官方支持的NodeJS访问API,提供后台登录授权
- PQ分区出错! 巧用Ghost急速补救的绝妙办法
- 深入C++中API的问题详解
- 使用WindowsAPI实现播放PCM音频的方法