zookeeper集群之开源客户端ZkClient的使用(四)
来源:互联网 发布:mysql可以没有主键吗 编辑:程序博客网 时间:2024/06/03 22:40
package com.ilike.testzkclient;
import java.util.List;
import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
/**
* zookeeper的开源客户端zkclent的使用
* 创建,删除,修改,读取节点, 获取子节点,判断节点是否存在,监听节点变化,监听子节点变化
*
* @author 桑伟东
*
*/
public class TestZkClient {
/**
* 1. 创建一个zkClient对象
* 第一个参数:服务器的ip地址
* 第二个参数:会话超时时间
* 第三个参数:连接超时时间
* 第四个参数:序列化器,为了直接将对象存入和取出
*/
ZkClient zkClient = new ZkClient(“192.168.111.129:2181”, 10000, 10000, new SerializableSerializer());
/** * 创建节点 */@Testpublic void TestCreateNode() { // 2.创建一个持久的数据节点,并存放一个Student对象 Student student = new Student(); student.setAge(23); student.setName("桑伟东"); // 返回创建的节点的路径 String path = zkClient.create("/node_6", student, CreateMode.PERSISTENT); System.out.println(path);}/** * 读取节点 */@Testpublic void TestGetData() { // 因为SerializableSerializer的存在,zkclient已经将底层的数据转化为student对象 // Student student=zkClient.readData("/node_6"); // 读取数据的同时我们换可以获取该对象的状态信息,如果要获取状态信息,需要传入一个stat对象 Stat stat = new Stat(); Student student = zkClient.readData("/node_6", stat); System.out.println(student); // zkclient会将该节点的状态信息封装在stat对象中 System.out.println(stat);}/** * 获取子节点 */@Testpublic void TestGetChild() { // 获取子节点的列表 List<String> childs = zkClient.getChildren("/"); System.out.println(childs.toString());}/** * 删除节点 */@Testpublic void TestDelNode() { // 删除节点(没有子节点),返回一个布尔值,表示删除成功与否 Boolean e = zkClient.delete("/node_9"); System.out.println(e); // 删除节点(有子节点),返回一个布尔值,表示删除成功与否 Boolean e2 = zkClient.deleteRecursive("/node_1"); System.out.println(e2);}/** * 判断节点是否存在 */@Testpublic void TestNodeExists() { // 判断某一节点是否存在,返回一个布尔值 boolean flag = zkClient.exists("/node_8"); System.out.println(flag);}/** * 修改节点数据 */@Testpublic void TestWriteData() { // 修改节点的数据 Student student = new Student(); student.setAge(22); student.setName("xpy"); // 修改数据,不校验版本号 zkClient.writeData("/node_6", student); // 修改数据,校验版本号 zkClient.writeData("/node_6", student, 1);}/** * 实现节点数据变化监听的类 * * @author 桑伟东 * */private static class ZkDataListener implements IZkDataListener { /** * 节点的数据发生改变 */ public void handleDataChange(String dataPath, Object data) throws Exception { // TODO Auto-generated method stub System.out.println(dataPath + data); } /** * 节点被删除 */ public void handleDataDeleted(String dataPath) throws Exception { // TODO Auto-generated method stub System.out.println(dataPath); }}/** * 订阅节点数据变化的通知 * * @throws InterruptedException */@Testpublic void TestSubscribeDataChanges() throws InterruptedException { zkClient.subscribeDataChanges("/node_10", new ZkDataListener()); Thread.sleep(Integer.MAX_VALUE);}/** * 实现子节点变化监听的类 * * @author 桑伟东 * */private static class ZkChildListener implements IZkChildListener { public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception { // TODO Auto-generated method stub System.out.println("节点路径:" + parentPath); System.out.println("子节点列表:" + currentChilds); }}/** * 订阅子节点变化的通知 * * @throws InterruptedException */@Testpublic void TestSubscribeChildChanges() throws InterruptedException { /* * 监听node_6节点的子节点列表的变化,传入一个实现了IZkChildListener监听器接口的类的对象 * 这里不光能监听到子节点的创建和删除引起的子节点列表发生变化的事件,换能监听到节点本身的创建和删除 也就是说,这里可以监听一个并不存在的节点 */ zkClient.subscribeChildChanges("/node_10", new ZkChildListener()); Thread.sleep(Integer.MAX_VALUE);}
}
- zookeeper集群之开源客户端ZkClient的使用(四)
- Zookeeper系列(十)Zookeeper开源客户端之ZKClient基本使用
- Zookeeper之开源客户端ZkClient
- 04.ZooKeeper读书笔记之开源客户端(ZkClient)
- Zookeeper系列(九)Zookeeper开源客户端之ZKClient和Curator简介
- ZooKeeper之zkClient使用
- I0Itec-zkClient --- Kafka中使用的Zookeeper客户端
- zookeeper集群之开源客户端Curator的使用(五)
- zookeeper三:zkClient的使用
- Zookeeper开源客户端ZKClient和Curator简介
- ZKClient操作zookeeper集群
- Zookeeper客户端库ZkClient
- Zookeeper客户端ZkClient
- ZooKeeper学习总结(2)——ZooKeeper开源Java客户端ZkClient使用
- zookeeper实战与源码分析----第三方客户端ZkClient使用之监听器
- zookeeper的zkclient的使用简介
- Zookeeper学习(五):ZKClient的使用
- Zookeeper学习(五):ZKClient的使用
- xgboost 调参经验
- activeMQ搭建和简单使用
- 嵌入式文件系统启动顺序init
- Linux 查看历史命令并执行
- java8 stream
- zookeeper集群之开源客户端ZkClient的使用(四)
- TeamViewer远程唤醒主机实战教程(多图)
- mybatis捕捉异常
- 设计模式:策略模式
- Hadoop伪分布式安装,出现DataNode节点无法正常启动
- dbcp和c3p0的使用
- 内存泄漏检测工具VLD在VS2010中的使用举例
- 7-1 六度空间(30 分)
- 欢迎使用CSDN-markdown编辑器