首页 > 编程语言 >java客户端连接zookeeper

java客户端连接zookeeper

时间:2023-07-10 15:23:38浏览次数:49  
标签:zooKeeper java lock zookeeper System println out event 客户端

一、使用官方的maven依赖:

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
        </dependency>

代码:

   ZooKeeper zooKeeper = new ZooKeeper("192.168.233.11:2182,192.168.233.11:2183,192.168.233.11:2184", 20000, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                String path = event.getPath();
                System.out.println("path:"+path);
                System.out.println("state:"+event.getState());
                System.out.println("type: "+event.getType());
                System.out.println("wrapper: "+event.getWrapper());
            }
        });

        /**
         * //创建永久节点
         * zooKeeper.create("/lock/pp","aaaa".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
         * //创建永久顺序节点
         * String response = zooKeeper.create("/lock/pp", "aaaa".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
         * //创建临时节点
         * zooKeeper.create("/lock/temp","aaaa".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
         * //创建临时顺序节点
         * zooKeeper.create("/lock/temp","aaaa".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
         *   //查询节点的数据
         *   byte[] data = zooKeeper.getData("/lock/pp", false, null);
         *
         *  //修改节点的数据
         *  zooKeeper.setData("/lock/pp", "bbd".getBytes(StandardCharsets.UTF_8), 0);
         *
         *  //判断路径是否存在
         *   zooKeeper.exists("/lock/pp33", false);
         *   //删除节点
         *    zooKeeper.delete("/lock",0);
//递归删除使用
ZKUtil.deleteRecursive(zk,"/lock") */ //注册事件 List<String> children = zooKeeper.getChildren("/lock/pp", new Watcher() { @Override public void process(WatchedEvent event) { System.out.println("收到回调事件。。。。。。。。。。。。。。。。。。。。"); String path = event.getPath(); System.out.println("path:" + path); System.out.println("state:" + event.getState()); System.out.println("type: " + event.getType()); System.out.println("wrapper: " + event.getWrapper()); } }); //创建子节点,触发事件 zooKeeper.create("/lock/pp/ll","aaaa".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); TimeUnit.SECONDS.sleep(15);

 方案二、第三方对官方依赖的封装:

       <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

 

标签:zooKeeper,java,lock,zookeeper,System,println,out,event,客户端
From: https://www.cnblogs.com/yangxiaohui227/p/17541235.html

相关文章

  • Java实现浏览器端大文件分片上传源代码
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭......
  • 运行 Spring6 报错 Internal error: (java.lang.ExceptionInInitializerError)
    问题描述:使用2019.3.5版本的IDEA构建Spring6项目。因为Spring6要求JDK的版本最低是Java17,我就直接在2019.3.5版本的IDEA中创建新的项目时使用了JDK17。 运行项目时IDEA 出现如下报错信息:Error:Internalerror:(java.lang.ExceptionInInitializerErro......
  • ionic cordova 打包Rlease版本包出现异常Execution failed for task ':app:mergeRelea
    异常: 解决方法:找到android=》app下的build.gradle文件,如下增加如下配置 运行ioniccordovabuildandroid--release打包语句正常执行 ......
  • java List去重的代码
    一、HashSet去重我们知道 HashSet 天生具备“去重”的特性,那我们只需要将List集合转换成HashSet集合就可以了,实现代码如下:publicclassListDistinctExample{publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<Integer>(){{......
  • 聊一聊Java中的Steam流
    1引言在我们的日常编程任务中,对于集合的制造和处理是必不可少的。当我们需要对于集合进行分组或查找的操作时,需要用迭代器对于集合进行操作,而当我们需要处理的数据量很大的时候,为了提高性能,就需要使用到并行处理,这样的处理方式是很复杂的。流可以帮助开发者节约宝贵的时间,让以上......
  • Java实现浏览器端大文件分片上传插件
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • Java 基础知识
    Java基础知识1.Java语言有哪些特点简单易学、有丰富的类库面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)与平台无关性(JVM是Java跨平台的根本)可靠安全支持多线程2.面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用按说......
  • java练习-插入排序
    packagecom.example.ss_0203_array.test.test_0710;/***分析:*1、数组遍历找出第一个开始乱序的索引,默认此索引之后的数组是无序的:startIndex*2、遍历数组,内嵌遍历后面的无序数组,比较当前数值和无序数组中的数值,大于则交换两个索引的数值,遍历完成,则数值交换完成*/publicc......
  • Java 集合框架
    Java集合框架Java集合框架是每一个入门开发者必会的内容,而且在较长的时间内容,不管是使用还是面试频度否非常的高,所以本人认为完全的、深入的学习是十分有必要的。本人结合源码和网络上的相关文章进行了总结。CollectionCollection是List和Set的父类,它抽象了单列数据集合......
  • Java 并发
    Java并发线程基础进程线程概念进程是一个独立的运行环境,而线程是在进程中执行的一个任务。他们两个本质的区别是是否单独占有内存地址空间及其它系统资源(比如I/O):进程单独占有一定的内存地址空间,所以进程间存在内存隔离,数据是分开的,数据共享复杂但是同步简单,各个进程之间互......