源于蚂蚁课堂的学习,点击这里查看(老余很给力)
zookeeper之所以应用广泛,源自其强大的功能,本文主要演示其对文件节点支持事件监听的功能
事件监听,分为:监听节点内容,监听节点子元素,监听节点状态
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 50000);
String path = "/my_servers";
监听子节点
zkClient.subscribeChildChanges(path, (s, list) -> list.forEach(e -> System.out.println(e)));
监听内容
zkClient.subscribeDataChanges(path +"/"+ "8081", new IZkDataListener() {
@Override
public void handleDataChange(String s, Object o) throws Exception {
System.out.println(s + "节点内容发生了变化:" + o);
}
@Override
public void handleDataDeleted(String s) throws Exception {
System.out.println(s + "节点被移除~~~");
}
});
监听状态
zkClient.subscribeStateChanges(new IZkStateListener(){
@Override
public void handleStateChanged(Watcher.Event.KeeperState keeperState) throws Exception {
System.out.println(keeperState.name());
}
@Override
public void handleNewSession() throws Exception {
System.out.println("开启新回话");
}
@Override
public void handleSessionEstablishmentError(Throwable throwable) throws Exception {
System.out.println(throwable);
}
});