Zookeeper实例原生API--检查节点是否存在
2017-06-11 22:30
676 查看
import java.util.concurrent.CountDownLatch; 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; /** * * @ClassName: Exist_API_Sync_Usage * @Description: TODO(ZooKeeper API 删除节点,使用同步(sync)接口) * @author RongShu * @date 2017年6月11日 下午8:40:51 * */ public class Exist_API_Sync_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 Exist_API_Sync_Usage()); connectedSemaphore.await(); zk.exists( path, true ); zk.create( path, "".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT ); zk.setData( path, "123".getBytes(), -1 ); zk.create( path+"/c1", "".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT ); zk.delete( path+"/c1", -1 ); zk.delete( path, -1 ); Thread.sleep( Integer.MAX_VALUE ); } @Override public void process(WatchedEvent event) { try { if (KeeperState.SyncConnected == event.getState()) { if (EventType.None == event.getType() && null == event.getPath()) { connectedSemaphore.countDown(); } else if (EventType.NodeCreated == event.getType()) { System.out.println("Node(" + event.getPath() + ")Created"); zk.exists( event.getPath(), true ); } else if (EventType.NodeDeleted == event.getType()) { System.out.println("Node(" + event.getPath() + ")Deleted"); zk.exists( event.getPath(), true ); } else if (EventType.NodeDataChanged == event.getType()) { System.out.println("Node(" + event.getPath() + ")DataChanged"); zk.exists( event.getPath(), true ); } } } catch (Exception e) {} } } 输出 Node(/zk-book)Created Node(/zk-book)DataChanged Node(/zk-book)Deleted
扩展
参考
1.《从Paxos到Zookeeper:分布式一致性原理与实践》
2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html
相关文章推荐
- Zookeeper实例ZkClient API-检查节点是否存在
- Zookeeper实例原生API--异步更新节点数据
- Zookeeper实例原生API--删除节点
- Zookeeper实例原生API--无权限信息的Zookeeper会话访问有权限信息的节点
- Zookeeper实例原生API--异步获取子节点列表
- Zookeeper实例原生API--同步创建节点
- Zookeeper实例原生API--同步获取节点数据
- Zookeeper实例原生API--同步/异步创建节点
- Zookeeper实例原生API--删除节点接口权限
- Zookeeper实例原生API--异步获取节点数据
- Zookeeper实例原生API--同步更新节点数据
- Zookeeper实例原生API--删除节点
- ZooKeeper之Java客户端API使用—检测节点是否存在
- Zookeeper实例原生API--异步创建节点
- Zookeeper实例原生API--使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点
- Zookeeper实例原生API--同步获取子节点列表
- Zookeeper系列(八)Zookeeper客户端(JAVA)API之节点检查和权限控制
- Zookeeper客户端API之节点检查和权限控制(十一)
- Zookeeper实例原生API--创建会话(包含权限信息)
- Zookeeper实例ZkClient API-获取子节点列表