0%

监听器

监听器

在启动zookeeper客户端时,会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener),通过connect线程将注册的监听事件发送给zookeeper,zookeeper会将注册的监听事件添加到注册监听列表中,如果zookeeper监听到数据或路径变化,就会将这个消息发送到listener线程,进而调用prcess()方法进行处理监听事件

Watch

Watch是一个一次性的触发器,当设置监视的数据发生改变时,该监视事件会被发送到客户端,触发一次之后如果没有再次对该数据进行监视,那么如果数据再次发生变化,将不会收到事件通知

注册watch操作包括所有的读操作getData、getChild、exists方法,触发watch的包括create、delete、setData方法,setData会触发znode上设置的data watch,create会触发znode上设置的data watch以及父节点上的child watch,delete会触发znode上设置的data watch、child watch以及父节点的child watch