打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查
public class ZKDemo1 {        private static final String CONNECT_STRING = "hadoop1:2181,hadoop2:2181,hadoop3:2181";    //如果zookeeper使用的是默认端口的话,此处可以省略端口号    //private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";        //设置超时时间    private static final int SESSION_TIMEOUT = 5000;        public static void main(String[] args) throws Exception {        //获取zookeeper的连接        //没有配置监听的话,最后一个参数设为null        ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);                                //创建一个节点        /**         * 四个参数path, data, acl, createMode         * path:创建节点的绝对路径         * data:节点存储的数据         * acl:权限控制         * createMode:节点的类型----永久、临时    有编号的、没有编号的         *          * */        //String create = zk.create("/xx", "xx".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);        //System.out.println(create);//输出的结果是:/xx0000000008                /**         * 判断节点是否存在         * */        Stat exists = zk.exists("/xx0000000008", null);        if(exists == null) {            System.out.println("节点不存在");        }else {            System.out.println("节点存在");        }                        /**         * 查看节点的数据         *          * */        /*byte[] data = zk.getData("/xx0000000008", false, null);        System.out.println(new String(data));*/                        /**         * 修改节点的数据         * */        /*Stat setData = zk.setData("/xx0000000008", "xyz".getBytes(), -1);        if(setData == null) {            System.out.println("节点不存在 --- 修改不成功");        }else {            System.out.println("节点存在 --- 修改成功");        }*/                        /**         * 删除节点         * */                /*zk.delete("/xx0000000008", -1);*/                                        //关闭zookeeper的连接        zk.close();    }}

监听设置

 1 public class ZKDemo2 { 2      3     private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3"; 4     private static final int SESSION_TIMEOUT = 5000; 5      6     public static void main(String[] args) throws Exception { 7  8         // 获取连接 9         // 当前的这个匿名内部类不是已经添加好的监听, 以后只要是当前这个zk对象添加了任何的监听器响应了之后,都会调用这个process方法10         ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() {11             12             @Override13             public void process(WatchedEvent event) {14                 15                 System.out.println("1111111111111111111111");16                 KeeperState state = event.getState();17                 String path = event.getPath();18                 EventType type = event.getType();19                 20                 System.out.println(state+"\t"+path+"\t"+type);21             }22         });23         24         System.out.println("2222222222222222222222");25         26         /**27          * 注册监听28          * 第二个参数有三种传法:29          * 30          * 1、false, 表示不使用监听器31          * 32          * 2、watcher对象, 表示当前的这次监听如果响应不了的话,就会回调当前这个watcher的process方法33          * 34          * 3、true,  表示如果当前的会话/zk 所注册或者添加的所有的监听器的响应,都会会调用 获取连接时  初始化的 监听器对象中 的 process 方法35          */36         zk.getData("/a/c", true, null);37         38         System.out.println("3333333333333333333333333333");39         Thread.sleep(5000);40         41         zk.setData("/a/c", "hehe666".getBytes(), -1);42         43         System.out.println("4444444444444444444444444444");44         45         zk.close();46         47         48         49     }50 51 }

输出结果

22222222222222222222221111111111111111111111SyncConnected    null    None33333333333333333333333333331111111111111111111111SyncConnected    /a/c    NodeDataChanged4444444444444444444444444444
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
动手实现一致性哈希算法,并搭建环境测试其负载均衡特性.
分布式锁与实现(二)——基于ZooKeeper实现
zookeeper进阶
ZooKeeper的学习与应用
ZooKeeper的部署以及简单使用
520疯狂之后我彻底蒙了,老板让我做技术选型,数据处理选kafka还是RocketMQ?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服