栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

zookeeper之ZkClient使用,java电子书阅读器开发

zookeeper之ZkClient使用,java电子书阅读器开发

import org.I0Itec.zkclient.ZkClient;

public class ZkClientTool {

public static ZkClient getZkClient() {

//获取zkclent new SerializableSerializer()是序列化器,可以直接传入对象,也可以直接读取,序列化器为我们完成序列化和反序列化

ZkClient zkClient = new ZkClient(“192.168.40.135:2181”, 10000, 500000, new MySerializer());

return zkClient;

}

}

创建节点:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

import org.apache.zookeeper.CreateMode;

public class CreateNode {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

User u

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

ser = User.builder().id(1).name(“zzz”).build();

String path = zkCliet.create("/node_2", user, CreateMode.PERSISTENT);

System.out.println(path);

}

}

获取节点值:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

import org.apache.zookeeper.data.Stat;

public class GetNodeData {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

//如果获取节点状态,将stat作为参数传入即可

Stat stat = new Stat();

String user = zkCliet.readData("/node_2", stat);

System.out.println(“user:” + user);

System.out.println(“stat” + stat);

}

}

获取子节点信息:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

import java.util.List;

public class GetChildNode {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

List children = zkCliet.getChildren("/node_2");

System.out.println(“children” + children.toString());

}

}

检测某个节点是否存在:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class NodeExits {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

boolean exists = zkCliet.exists("/node_2");

System.out.println(“exists:” + exists);

}

}

删除节点:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class DeleteNode {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

boolean node_2 = zkCliet.delete(“node_2”);

System.out.println(“delete node_2:” + node_2);

//如果节点有子节点,使用deleteRecursive循环删除

boolean node_21 = zkCliet.deleteRecursive(“node_2”);

System.out.println(“contains child delete node_21:” + node_21);

}

}

如果有子节点会报错:

需要用deleteRecursive删除:

节点修改:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class WriteData {

public static void main(String[] args) {

ZkClient zkCliet = ZkClientTool.getZkClient();

Object oldDate = zkCliet.readData("/node_1");

System.out.println(“oldDate:” + oldDate);

zkCliet.writeData("/node_1", “zkca”);

Object newDate = zkCliet.readData("/node_1");

System.out.println(“newDate:” + newDate);

}

}

事件订阅:

可以订阅两种事件:

1.节点的子节点列表发生变化

2.节点本身数据发生变化

首先看节点的子节点的变化的事件订阅

package com.zkclient;

import org.I0Itec.zkclient.IZkChildListener;

import org.I0Itec.zkclient.ZkClient;

import java.util.List;

public class SubScribeChildChange {

private static class ZkChildChangeListener implements IZkChildListener {

public void handleChildChange(String parentPath, List childrenList) throws Exception {

System.out.println(“parentPath:” + parentPath);

System.out.println(“childrenList:” + childrenList.toString());

}

}

public static void main(String[] args) throws InterruptedException {

ZkClient zkCliet = ZkClientTool.getZkClient();

//可以监听:给node_1添加子节点、删除子节点甚至node_1节点本身的创建和删除

zkCliet.subscribeChildChanges("/node_1", new ZkChildChangeListener());

Thread.sleep(Integer.MAX_VALUE);

}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/680072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号