1.监听器原理
简单的监听过程可分为以下6个步骤。
(1)首先要有一个main线程
(2)在main线程中创建zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)
(3)通过connect线程将注册的监听事件发送给zookeeper
(4)在zookeeper的监听器列表中将注册的监听事件添加到列表中
(5)zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
(6)listener线程内部调用了process方法
2.监听事件
zookeeper客户端可以通过注册事件来监听znode节点的变化。
当zookeeper客户端监听某个znode节点“/node-x”,当znode发生变化时,会产生以下七种事件:
(1)NodeCreated:当node-x这个节点被创建时,该事件被触发。
(2)NodeChildrenChanged:当node-x这个节点的直接子节点被创建、被删除、子节点数据发生变更时,该事件被触发。
(3)NodeDataChanged:当node-x这个节点的数据发生变更时,该事件被触发。
(4)NodeDeleted:当node-x这个节点被删除时,该事件被触发。
(5)None:当zookeeper客户端的连接状态发生变更时,即KeeperState.Expired、KeeperState.Disconnected、KeeperState.SyncConnected、KeeperState.AuthFailed状态切换时,描述的事件类型为EventType.None。
(6)DataWatchRemoved:当node-x这个节点的监听事件被移除时触发。
(7)ChildWatchRemoved:当node-x这个节点的子节点监听事件被移除时触发。