zookeeper知识点三(获取节点数据)

来源:互联网 发布:mac三国志13修改器 编辑:程序博客网 时间:2024/06/06 18:16
public class GetDataSync implements Watcher{
    
    
    private static ZooKeeper zooKeeper;
    private static Stat stat = new Stat();
    
    public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
        zooKeeper = new ZooKeeper("127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183",5000,new GetDataSync());
        System.out.println(zooKeeper.getState().toString());
        Thread.sleep(Integer.MAX_VALUE);
    }
    
    private void doSomething(ZooKeeper zookeeper){
            try {
//                zookeeper.addAuthInfo("digest", "jike:123456".getBytes());
                System.out.println(new String(zooKeeper.getData("/node_1", true, stat)));
                System.out.println(stat);
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    }

    @Override
    public void process(WatchedEvent event) {
        System.out.println("事件状态:" + event.getState() +",事件类型:" +  event.getType() +",事件涉及路径:" + event.getPath());
        if (event.getState()==KeeperState.SyncConnected){
            if (event.getType()==EventType.None && null==event.getPath()){
                doSomething(zooKeeper);
            }else{                
                if (event.getType()==EventType.NodeDataChanged){
                    try {
                        System.out.println(new String(zooKeeper.getData(event.getPath(), true, stat)));
                        System.out.println("stat:"+stat);
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    
                }    
            }
        
        }
    }

}

0 0