1.创建会话
public class createSession { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; /** * 创建会话 * new SerializableSerializer() 创建序列化器接口,用来序列化和反序列化 */ ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); } }
public class createNode { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); User user = new User(); user.setId(1); user.setName("testUser"); /** * "/testUserNode" :节点的地址 * user:数据的对象 * CreateMode.PERSISTENT:创建的节点类型 */ String path = zkClient.create("/testUserNode", user, CreateMode.PERSISTENT); //输出创建节点的路径 System.out.println("created path:"+path); } }
//注意:一定要实现序列化接口 implements Serializable public class User implements Serializable{ private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class getData { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); Stat stat = new Stat(); //获取 节点中的对象 User user = zkClient.readData("/testUserNode",stat); System.out.println(user.getName()); System.out.println(stat); } }
public class getData { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); boolean e = zkClient.exists("/testUserNode"); //返回 true表示节点存在 ,false表示不存在 System.out.println(e); } }
public class getData { public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); //删除单独一个节点,返回true表示成功 boolean e1 = zkClient.delete("/testUserNode"); //删除含有子节点的节点 boolean e2 = zkClient.deleteRecursive("/test"); //返回 true表示节点成功 ,false表示删除失败 System.out.println(e1); } }
6.更新数据
public static void main(String[] args) { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); User user = new User(); user.setId(2); user.setName("testUser2"); /** * testUserNode 节点的路径 * user 传入的数据对象 */ zkClient.writeData("/testUserNode", user); }
public class SubscribeChildChanges { private static class ZKChildListener implements IZkChildListener{ /** * handleChildChange: 用来处理服务器端发送过来的通知 * parentPath:对应的父节点的路径 * currentChilds:子节点的相对路径 */ public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception { System.out.println(parentPath); System.out.println(currentChilds.toString()); } } public static void main(String[] args) throws InterruptedException { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); /** * "/testUserNode" 监听的节点,可以是现在存在的也可以是不存在的 */ zkClient.subscribeChildChanges("/testUserNode3", new ZKChildListener()); Thread.sleep(Integer.MAX_VALUE); } }
public class SubscribeDataChanges { private static class ZKDataListener implements IZkDataListener{ public void handleDataChange(String dataPath, Object data) throws Exception { System.out.println(dataPath+":"+data.toString()); } public void handleDataDeleted(String dataPath) throws Exception { System.out.println(dataPath); } } public static void main(String[] args) throws InterruptedException { //zk集群的地址 String ZKServers = "192.168.30.164:2181,192.168.30.165:2181,192.168.30.166:2181"; ZkClient zkClient = new ZkClient(ZKServers,10000,10000,new SerializableSerializer()); System.out.println("conneted ok!"); zkClient.subscribeDataChanges("/testUserNode", new ZKDataListener()); Thread.sleep(Integer.MAX_VALUE); } }