ZooKeeper学习(三)ZooKeeper API操作
这里写目录标题API准备工作创建maven项目配置pom文件创建配置文件API操作测试zookeeper能否连接API准备工作创建maven项目点击新建项目随便写就行配置pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="ht
·
这里写目录标题
API准备工作
创建maven项目
点击新建项目
随便写就行
配置pom文件
<?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.zookeeper.org</groupId>
<artifactId>zookeeper</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
</project>
创建配置文件
创建log4j.properties文件
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
API操作
创建zookeeper客户端
public class zookeeper {
public static void main(String[] args) throws Exception{
// 创建Zookeeper客户端
// 参数1:zk地址;参数2:会话超时时间;参数3:监视器
ZooKeeper zk = new ZooKeeper("master1:2181,slave1:2181,slave2:2181",30000,new Watcher() {
@Override
public void process(WatchedEvent event){
System.out.println("事件类型为:" + event.getType());
System.out.println("事件发生的路径:"+event.getPath());
System.out.println("通知状态为:" +event.getState());
}
});
}
}
创建目录节点
// 创建目录节点
// 参数1:要创建的节点路径,参数2:节点数据,参数3:节点限权,参数4:节点类型
zk.create("/testRootPath", "testRootData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
创建子目录节点
// 创建子目录节点
zk.create("/testRootPath/testChildPathOne","testRootDataOne".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
获取目录节点数据
// 获取目录节点数据
// 参数1:存储节点数据的路径,参数2:是否需要监控此节点,参数3:stat节点的统计信息
System.out.println("testRootData 节点数据为: " + new String(zk.getData("/testRootPath",false,null)));
获取子目录节点数据
// 获取子目录节点数据
System.out.println(zk.getChildren("testRootPath", true));
修改子目录节点数据,使得监听触发
// 修改子目录节点数据,使得监听触发
// 参数1:存储子目录节点数据的路径,参数2:要修改的数据,参数3:预期要的匹配版本
zk.setData("/testRootPath/testChildPathOne", "modifyChildDataOne".getBytes(), -1);
判断目录节点是否存在
// 判断目录节点是否存在
System.out.println("目录节点状态: [" + zk.exists("/testRootPath",true) + "]");
删除子目录节点
// 删除子目录节点
zk.delete("/testRootPath/testChildPathOne", -1);
删除目录节点
// 删除目录节点
zk.delete("/testRootPath", -1);
zk.close();
全代码
package zookeeper;
/**
* @author 公羽
* @time : 2020/11/24 22:30
* @File : zookeeper.java
*/
import org.apache.zookeeper.*;
public class zookeeper {
public static void main(String[] args) throws Exception {
// 创建Zookeeper客户端
// 参数1:zk地址;参数2:会话超时时间;参数3:监视器
ZooKeeper zk = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 30000, new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println("事件类型为:" + event.getType());
System.out.println("事件发生的路径:" + event.getPath());
System.out.println("通知状态为:" + event.getState());
}
});
// 创建目录节点
// 参数1:要创建的节点路径,参数2:节点数据,参数3:节点限权,参数4:节点类型
zk.create("/testRootPath", "testRootData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// 创建子目录节点
zk.create("/testRootPath/testChildPathOne", "testRootDataOne".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// 获取目录节点数据
// 参数1:存储节点数据的路径,参数2:是否需要监控此节点,参数3:stat节点的统计信息
System.out.println("testRootData 节点数据为: " + new String(zk.getData("/testRootPath", false, null)));
// 获取子目录节点数据
System.out.println(zk.getChildren("/testRootPath", true));
// 修改子目录节点数据,使得监听触发
// 参数1:存储子目录节点数据的路径,参数2:要修改的数据,参数3:预期要的匹配版本
zk.setData("/testRootPath/testChildPathOne", "modifyChildDataOne".getBytes(), -1);
// 判断目录节点是否存在
System.out.println("目录节点状态: [" + zk.exists("/testRootPath", true) + "]");
// 删除子目录节点
zk.delete("/testRootPath/testChildPathOne", -1);
// 删除目录节点
zk.delete("/testRootPath", -1);
zk.close();
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)