码迷,mamicode.com
首页 > 编程语言 > 详细

java 学习笔记(四) java连接ZooKeeper

时间:2018-03-02 23:53:11      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:children   start   intval   string   获取   enc   delete   src   mode   

public class Demo2 {

public static void main(String[] args) {
    String connectString = "192.168.168.133:2181";
    int sessionTimeout = 500000;  // 会话时间。设置长一点,如果不够长,则会connect loss
    try {
        // 建立zookeeper链接
        ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, new Watcher(){
            public void process(WatchedEvent event) {
                // 监控所有触发的事件
                System.out.println("start do something");
                EventType type = event.getType();        // 事件类型。枚举
                KeeperState state = event.getState();    // 状态。 枚举

// type.getIntValue();
switch (type) {
case None: // int值对应 -1
System.out.println("none 事件触发");
break;
case NodeCreated: // int值对应 1
System.out.println("创建节点事件发生了");
break;
case NodeDeleted: // int值对应 2
System.out.println("删除节点事件发生了");
break;
case NodeDataChanged: // int值对应 3
System.out.println("节点数据改变事件发生了");
break;
case NodeChildrenChanged: // int值对应 4
System.out.println("子节点改变事件发生了");
break;
default:
System.out.println("I do not know what operate you do");
break;
}
// state.getIntValue(); NoSyncConnected 1和Unknown-1
switch (state) {
case Disconnected: // 0
System.out.println("失去连接");
break;
case SyncConnected: // 3
System.out.println("异步链接");
break;
case Expired: // -112
System.out.println("超时过期");
break;
default:
break;
}

                System.out.println("end");
            }
        });
        System.out.println("zk创建成功");
        List<String> list = zk.getChildren("/", true); // 获取所有节点
        if(list != null) {
            for(String s : list)
                System.out.println(s);
        }
        // 在/app5节点下创建child节点
        zk.create("/app7", "/app8的子节点数据".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); // 会对数据持久化,服务下次启动任然存在
        zk.create("/app8", "/app8的子节点数据".getBytes(), Ids.OPEN_ACL_UNSAFE, 
                CreateMode.PERSISTENT, new StringCallback(){
            public void processResult(int rc, String path, Object ctx, String name) {
                System.out.println("rc: " + rc);
                System.out.println("path: " + path);
                System.out.println("Object:" + ctx);
                System.out.println("name: " + name);
            }
        }, "ctx object");

    } catch (IOException e) {
        e.printStackTrace();
    } catch (KeeperException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

}

zk每一次操纵都会被监控watcher记录下来
技术分享图片

出现这种报错是由于创建节点的时候没有创建父节点 /app1
技术分享图片

java 学习笔记(四) java连接ZooKeeper

标签:children   start   intval   string   获取   enc   delete   src   mode   

原文地址:https://www.cnblogs.com/Andrew520/p/8495384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!