Zookeeper实例原生API--异步创建节点
来源:互联网 发布:如何开展网络安全教育 编辑:程序博客网 时间:2024/06/05 05:32
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.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;/** * * @ClassName: ZooKeeper_Create_API_ASync_Usage * @Description: TODO(ZooKeeper API创建节点,使用异步(async)接口。) * @author RongShu* @date 2017年6月11日 下午8:29:44 * */public class ZooKeeper_Create_API_ASync_Usage implements Watcher { private static CountDownLatch connectedSemaphore = new CountDownLatch(1); public static void main(String[] args) throws Exception{ ZooKeeper zookeeper = new ZooKeeper("localhost:2181",5000,new ZooKeeper_Create_API_ASync_Usage()); connectedSemaphore.await(); zookeeper.create("/zk-test-ephemeral-", "".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL, new IStringCallback(), "I am context."); zookeeper.create("/zk-test-ephemeral-", "".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL,new IStringCallback(), "I am context."); zookeeper.create("/zk-test-ephemeral-", "".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL,new IStringCallback(), "I am context."); Thread.sleep( Integer.MAX_VALUE ); } public void process(WatchedEvent event) { if (KeeperState.SyncConnected == event.getState()) { connectedSemaphore.countDown(); } }}class IStringCallback implements AsyncCallback.StringCallback{ public void processResult(int rc, String path, Object ctx, String name) { System.out.println("Create path result: [" + rc + ", " + path + ", " + ctx + ", real path name: " + name); } }输出Create path result: [0, /zk-test-ephemeral-, I am context., real path name: /zk-test-ephemeral-Create path result: [-110, /zk-test-ephemeral-, I am context., real path name: nullCreate path result: [0, /zk-test-ephemeral-, I am context., real path name: /zk-test-ephemeral-0000000021
注意:
AsyncCallback包含了StatCallback、DataCallback、ACLCallback、ChildrenCallback、Children2Callback、StringCallback和VoidCallback 七种不同回调接口。和同步接口最大的区别就是:节点创建过程(包括网络通信和服务端的节点创建过程)是异步的,并且在同步接口调用过程中,我们需要关注接口抛出的异常,但是在异步接口中,接口本身不会抛出异常的,所有的异常都会在回调函数中通过Result Code 来体现。
扩展
关于API内容请参看官网或Zookeeper实例原生API--同步创建节点
参考
1.《从Paxos到Zookeeper:分布式一致性原理与实践》
2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html
阅读全文
0 0
- Zookeeper实例原生API--异步创建节点
- Zookeeper实例原生API--同步创建节点
- Zookeeper实例原生API--异步获取子节点列表
- Zookeeper实例原生API--异步获取节点数据
- Zookeeper实例原生API--异步更新节点数据
- Zookeeper实例原生API--删除节点
- Zookeeper实例ZkClient API-创建节点
- Zookeeper实例原生API--创建一个基本的Zookeeper会话
- Zookeeper实例原生API--同步获取子节点列表
- Zookeeper实例原生API--同步获取节点数据
- Zookeeper实例原生API--同步更新节点数据
- Zookeeper实例原生API--检查节点是否存在
- Zookeeper实例原生API--删除节点接口权限
- Zookeeper实例原生API--创建会话(包含权限信息)
- Zookeeper实例原生API--无权限信息的Zookeeper会话访问有权限信息的节点
- Zookeeper实例Curator API-使用Curator创建节点
- Zookeeper实例原生API--使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点
- Zookeeper实例ZkClient API-删除节点
- Android 工具:TraceView
- 一个jmter接口测试的demo(转载)
- JQ对HTML样式的移除、增加、切换
- 二叉树之重建
- RabbitMQ在SpringBoot中使用的一些注意点
- Zookeeper实例原生API--异步创建节点
- 起点
- Linux配置静态IP(转载百度)
- 傅盛认知三部曲之二:管理本质就是认知管理
- Netty入门应用一
- C# 生成随机数
- jquery Ajax应用与常用插件
- 搭建 hibernate 环境
- ActiveMQ服务二次启动时,报错,居然是因为她!