您的位置:首页 > 其它

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