绝对大气漂亮的响应式网站后台模板,如何搭建个人博客网站,wordpress 搜索表单,期刊网站源码ZooKeeper设置监听器#xff0c;通过getData()/getChildern()/xists()方法。 步骤#xff1a; 1.创建监听器#xff1a;创建一个实现Watcher接口的类#xff0c;实现process()方法。这个方法会在ZooKeeper向客户端发送一个Watcher事件通知的时候被调用。 2.注册监听器…ZooKeeper设置监听器通过getData()/getChildern()/xists()方法。 步骤 1.创建监听器创建一个实现Watcher接口的类实现process()方法。这个方法会在ZooKeeper向客户端发送一个Watcher事件通知的时候被调用。 2.注册监听器使用getData()getChildern()或exists()方法为特定的znode注册监听器。方法的第二个参数是一个布尔值若为true,表示该znode设置监听器。 3.触发监听器当znode发生变化时比如节点内容改变节点下的子节点列表改变ZooKeeper会触发相应的监听器并调用process()方法。 注 getData()和exists()方法可以设置数据监视点当节点的数据发生变化时会触发监听器。 getChidren()方法可以设置子节点监视点当节点的子节点列表发生变化时会触发监听器。 ZooKeeper的监听器是一次性的一旦触发了监听器还想继续监听这个节点的变化需要重新注册监听器。 示例如下
package com.example.demoone;import com.cloudera.impala.jdbc41.internal.apache.zookeeper.KeeperException;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.WatchedEvent;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.Watcher;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.ZooKeeper;import java.io.IOException;/*** author LSY* DATE 2024/4/19 21:05*/
public class ZooKeeperWatcherDemo {public static void main(String[] args) throws InterruptedException, KeeperException, IOException {//创建ZooKeeper客户端实例这个客户端会连接到运行在本地机器的2181端口的ZooKeeper服务器//会话超时时间是3000毫秒当接收到Watcher事件通知时会调用Watcher的Process()方法。//localhost:2181 :是ZooKeeper服务器的地址和端口号。//3000会话超时时间单位是毫秒。// 如果在这段时间内客户端没有与服务器进行任何交互发送请求或接收响应// 服务器会认为这个会话已经超时然后关闭这个会话。ZooKeeper zooKeepernew ZooKeeper(localhost:2181, 3000, new Watcher() {Overridepublic void process(WatchedEvent watchedEvent) {//process方法会在ZooKeeper向客户端发送一个Watcher事件通知时被调用。System.out.println(默认事件 watchedEvent.getType());}});//创建一个监听器:watcher是一个实现Watcher接口的对象定义怎么样响应ZooKeeper的通知。//当/product这个节点的状态发生变化时ZooKeeper会调用watcher的process()方法。Watcher watchernew Watcher() {Overridepublic void process(WatchedEvent event) {System.out.println(触发了event.getType()事件);}};//使用exists()方法注册监听器:在ZooKeeper中注册一个监听器来监控/product这个节点的状态//exists()会检查/product这个节点是否存在同时注册一个监听器watcher。//当/product这个节点状态发生变化时节点被创建删除或者节点数据发生变化,ZooKeeper会触发watcherzooKeeper.exists(/product,watcher);//使用getData()方法注册// 监听器在ZooKeeper中获取/product这个节点的数据并注册一个监听器来监控这个节点的状态。//getData()方法会读取/product这个节点的数据同时注册一个监听器watcher。//当/product这个节点的数据发生变化时ZooKeeper会触发watcher。//zooKeeper.getData(/product,watcher,null);//使用getChildren()方法注册监听器//在ZooKeeper中获取/product这个节点的子节点列表并注册一个监听器来监控这个节点的子节点列表//并注册一个监听器来监控这个节点的子节点列表的变化。//getChildren()方法会读取/product这个节点的子节点列表同时注册一个监听器watcher.//当/product这个节点的子节点列表发生变化时例如有子节点被添加或删除,ZooKeeper会触发watcher.//watcher是一个实现了Watcher接口的对象它定义了如何响应ZooKeeper的通知。//当/product这个节点的子节点列表发生变化时ZooKeeper会调用watcher的process()方法。//zooKeeper.getChildren(/product,watcher);//让主线程等待方便观察监听器的触发情况Thread.sleep(Long.MAX_VALUE);}
}