本章介绍使在idea环境中使用maven工程进行连接zookeeper,并进行简单的增删查改操作。

一、使用的pom依赖

添加zookeeper依赖,以及进行测试的junit测试依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xiaohui.zk</groupId><artifactId>zkdemo1</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.7</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies></project>

二、添加测试类进行连接、新增、修改、查询等操作

1,进行连接zookeeper,并进行创建一个 /huizi 节点

在创建时参数 ZooDefs.Ids.OPEN_ACL_UNSAFE 表示节点的访问权限,OPEN_ACL_UNSAFE 表示可以被所有的客户端节点访问到。


public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点String path = zooKeeper.create("/huizi","nodeValue".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,  //CreateMode.PERSISTENT);//四种模式System.out.println("路径:"+path);}}

执行结束后可以通过linux客户端工具在安装目录bin下使用 ./zkCli.sh 进入客户端命令控制台  命令 ls / 查看成功创建节点 huizi 。

2,创建子节点代码

package com.xiaohui.zk.test;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
//        String path = zooKeeper.create("/huizi",
//                "nodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("路径:"+path);//3, 创建子节点String childenPath = zooKeeper.create("/huizi/childenNode","childenNodeValue".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,  //CreateMode.PERSISTENT);//四种模式System.out.println("childenPath路径:"+childenPath);}
}

控制台使用 ls /huizi 查看其下面的子节点:

3,打印父节点和子节点中的值

package com.xiaohui.zk.test;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
//        String path = zooKeeper.create("/huizi",
//                "nodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("路径:"+path);//3, 创建子节点
//        String childenPath = zooKeeper.create("/huizi/childenNode",
//                "childenNodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)byte[] value = zooKeeper.getData("/huizi",false,null);System.out.println("p:"+new String(value));List<String> children = zooKeeper.getChildren("/huizi", false);for (String child : children) {System.out.println("c:"+child);}}
}

打印如下:

收到监听:type:None, Path:null, State:SyncConnected
p:nodeValue
c:childenNode

4,修改节点中的值

在set 方法中  最后一个参数 表示版本号,-1 表示可以被所有版本都可以匹配到。

package com.xiaohui.zk.test;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
//        String path = zooKeeper.create("/huizi",
//                "nodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("路径:"+path);//3, 创建子节点
//        String childenPath = zooKeeper.create("/huizi/childenNode",
//                "childenNodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)
//        byte[] value = zooKeeper.getData("/huizi",false,null);
//        System.out.println("p:"+new String(value));
//
//        List<String> children = zooKeeper.getChildren("/huizi", false);
//        for (String child : children) {
//            System.out.println("c:"+child);
//        }//5, 修改节点的值zooKeeper.setData("/huizi", "newValue".getBytes(), -1);byte[] value = zooKeeper.getData("/huizi",false,null);System.out.println("data:"+new String(value));}
}

5,删除某个节点,并查看其是否存在

package com.xiaohui.zk.test;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
//        String path = zooKeeper.create("/huizi",
//                "nodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("路径:"+path);//3, 创建子节点
//        String childenPath = zooKeeper.create("/huizi/childenNode",
//                "childenNodeValue".getBytes(),
//                ZooDefs.Ids.OPEN_ACL_UNSAFE,  //
//                CreateMode.PERSISTENT);//四种模式
//        System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)
//        byte[] value = zooKeeper.getData("/huizi",false,null);
//        System.out.println("p:"+new String(value));
//
//        List<String> children = zooKeeper.getChildren("/huizi", false);
//        for (String child : children) {
//            System.out.println("c:"+child);
//        }//5, 修改节点的值
//        zooKeeper.setData("/huizi", "newValue".getBytes(), -1);
//        byte[] value = zooKeeper.getData("/huizi",false,null);
//        System.out.println("data:"+new String(value));//6, 判断某个节点是否存在Stat exists = zooKeeper.exists("/huizi/childenNode", false);System.out.println(exists);//7, 删除节点zooKeeper.delete("/huizi/childenNode", -1);Stat exists1 = zooKeeper.exists("/huizi/childenNode", false);System.out.println(exists1);}
}

打印如下:

收到监听:type:None, Path:null, State:SyncConnected
4294967326,4294967326,1596599387683,1596599387683,0,0,0,0,16,0,4294967326null

ZooKeeper(二) idea中使用Java操作zookeeper相关推荐

  1. ZooKeeper入门(二)Java操作zookeeper

    首先是pom依赖: <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zoo ...

  2. zookeeper教程,docker 安装,命令,python操作zookeeper,分布式队列,分布式锁

    docker安装zookeeper服务端 首先安装单节点的服务端,如果安装多节点的服务端,需要为每个节点配置其他节点的地址. docker run --privileged=true -d --nam ...

  3. 【Zookeeper】基本使用:Curator操作Zookeeper

    针对zookeeper,比较常用的Java客户端有zkclient.curator. 由于 Curator 对于 zookeeper 的抽象层次比较高,简化了 zookeeper客户端的开发量.使得c ...

  4. java实战:邮件群发推广微信公众号(二),内含java操作excel及java操作mysql

    上一篇写好了用于发送邮件的类,本篇把余下的设定定时任务.从excel读取发件人账号.从mysql读取收件人邮箱以及随机标题和内容来实现.先看整个应用的文件框架结构,如下图: 上图中log4j.prop ...

  5. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  6. Zookeeper学习之源生API的使用(java与shell操作zookeeper)。

    如果不会搭建zookeeper环境:请看此文章:Zookeeper学习之集群环境搭建 1.操作zookeeper(shell) 启动zookeeper客户端:zkCli.sh; 根据提示命令进行操作: ...

  7. 在Eclipse中运行JAVA代码远程操作HBase的示例

    2019独角兽企业重金招聘Python工程师标准>>> 下面是一个在Windows的Eclipse中通过JAVA操作一个Linux上运行的hbase的示例. Hbase的配置需要注意 ...

  8. 服务注册与发现-Zookeeper(二)

    Zookeeper 概述   Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目. Zookeeper 工作机制   Zookeeper 从设计模式角度来理解,是一个基 ...

  9. python 操作 zookeeper 快速入门

    python 操作 zookeeper 快速入门 文章目录 python 操作 zookeeper 快速入门 什么是zookeeper python 操作 zk 快速入门 zk节点 创建节点 查询节点 ...

最新文章

  1. LeetCode简单题之两个数组的交集 II
  2. usaco Shaping Regions
  3. three.js绘制过程(二)
  4. 关于AI方面创业公司的分析
  5. class function,delphi静态函数的对象基址分析static
  6. 离散信号处理的基本概念理解(第一章 离散序列和离散系统(全))
  7. 云服务器与传统服务器的优势差异
  8. Spark源码阅读环境搭建
  9. Linux直接复制eclipse也可以使用
  10. python的评分卡模型
  11. 关于无盘工作站的初步了解(RPL/PXE)
  12. UEditor 配置
  13. VSCode自定义网络背景皮肤
  14. ChemDraw使用不了怎么办
  15. linux 英语翻译软件下载,英语翻译神器下载
  16. 态度篇·与其混不如滚
  17. ZKNUOJ 1019
  18. 电脑无线共享手机wify上网
  19. 常用运营商PLMN值(MCCMNC)
  20. MS9331--4K hdmi信号放大延长器

热门文章

  1. 为 SQL Server 启用 AWE 内存。
  2. 《天下无贼》经典对白
  3. 苹果系统中国日历服务器,AppleMac苹果电脑最好用的中国农历日历(TinyCal)v1.11.0
  4. unity和python通讯_Python 与 Unity mlagents 交互 API
  5. java之线程相关juc
  6. SpringBoot测试失败并报错: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
  7. php怎样使用pdo,PHP中使用PDO_PHP教程
  8. “霸座女”越席乘坐火车并阻碍民警执行职务被拘留
  9. [洛谷P3521][POI2011]ROT-Tree Rotations
  10. NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览