ZooKeeper Watcher 机制
文章来源地址https://www.toymoban.com/news/detail-856674.html
- client 向zookeeper 注册监听
- client注册的同时会存储一个WatchManager对象
- 向zookeeper发生改变则notification client 并发送一个WatchManager对象,然后client再更新该对象
package com.jacky.zk.demo;
import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;
import java.util.List;
/*
* 使用监听器
* */
public class Get_child {
public static void main(String[] args) throws InterruptedException {
// 获取到zkClient
final ZkClient zkClient= new ZkClient("127.0.0.1:2181");
// zkClient 对指定目录进行监听(不存在的目录)
/*
ps: 可以监听的事件类型:
NodeCreated:当ZNode被创建时触发。
NodeDeleted:当ZNode被删除时触发。
NodeDataChanged:当ZNode的数据内容发生改变时触发。
NodeChildrenChanged:当ZNode的子节点列表发生更改时触发(添加或删除子节点)。
ConnectionStateChanged:与ZooKeeper服务器的连接状态发生变化时触发。
* */
zkClient.subscribeChildChanges("/zk-jk", new IZkChildListener() {
// 回调
@Override
public void handleChildChange(String s, List<String> children) throws Exception {
System.out.println("error"+children);
}
});
zkClient.createPersistent("/zk-jk");
Thread.sleep(2000);
zkClient.createPersistent("/zk-jk/cls-jk");
Thread.sleep(2000);
zkClient.deleteRecursive("/zk-jk/cls-jk");
Thread.sleep(2000);
zkClient.delete("/zk-jk");
Thread.sleep(Integer.MAX_VALUE);
}
}
文章来源:https://www.toymoban.com/news/detail-856674.html
到了这里,关于zookeeper监听集群节点的实现zkclient组件实现方案(Java版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!