Zookeeper实例原生API--异步获取节点数据
2017-06-11 22:28
791 查看
import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.AsyncCallback; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.EventType; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; /** * * @ClassName: GetData_API_ASync_Usage * @Description: TODO(ZooKeeper API 获取节点数据内容,使用异步(async)接口) * @author RongShu * @date 2017年6月11日 下午8:36:04 * */ public class GetData_API_ASync_Usage implements Watcher { private static CountDownLatch connectedSemaphore = new CountDownLatch(1); private static ZooKeeper zk; public static void main(String[] args) throws Exception { String path = "/zk-book"; zk = new ZooKeeper("localhost:2181",5000,new GetData_API_ASync_Usage()); connectedSemaphore.await(); zk.create( path, "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL ); zk.getData( path, true, new IDataCallback(), null ); zk.setData( path, "123".getBytes(), -1 ); Thread.sleep( Integer.MAX_VALUE ); } public void process(WatchedEvent event) { if (KeeperState.SyncConnected == event.getState()) { if (EventType.None == event.getType() && null == event.getPath()) { connectedSemaphore.countDown(); } else if (event.getType() == EventType.NodeDataChanged) { try { zk.getData( event.getPath(), true, new IDataCallback(), null ); } catch (Exception e) {} } } } } class IDataCallback implements AsyncCallback.DataCallback{ public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat) { System.out.println(rc + ", " + path + ", " + new String(data)); System.out.println(stat.getCzxid()+","+stat.getMzxid()+","+stat.getVersion()); } } 输出 0, /zk-book, 123 388,388,0 0, /zk-book, 123 388,389,1
参考
1.《从Paxos到Zookeeper:分布式一致性原理与实践》
2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html
相关文章推荐
- Zookeeper实例原生API--异步获取子节点列表
- Zookeeper实例原生API--同步获取节点数据
- Zookeeper实例原生API--异步更新节点数据
- Zookeeper实例原生API--同步/异步创建节点
- Zookeeper实例原生API--同步更新节点数据
- Zookeeper实例原生API--异步创建节点
- Zookeeper实例原生API--使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点
- Zookeeper实例原生API--同步获取子节点列表
- Zookeeper实例ZkClient API-获取节点数据内容
- Zookeeper实例原生API--检查节点是否存在
- Zookeeper实例原生API--无权限信息的Zookeeper会话访问有权限信息的节点
- Zookeeper实例原生API--删除节点接口权限
- Zookeeper实例原生API--删除节点
- Zookeeper实例ZkClient API-获取子节点列表
- Zookeeper实例原生API--同步创建节点
- Zookeeper实例原生API--删除节点
- php获取新浪微博数据API实例
- Zookeeper客户端基本操作java实现——创建连接、创建节点、添加修改节点内容、获取子节点、获取节点数据、删除节点
- .Net MVC3之1:前台异步获取json数据的实例(1)
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)