Watcher优势
通过watcher,可以避免主动轮询导致的额外负担,更加实时和有效率。
Watcher接口
仅有一个接口:
public void process(WatchedEvent event)
WatchedEvent代表watcher到的事件,它包含发生了什么事件,ZooKeeper的当前连接状态以及产生事件的ZNode路径。
1. KeeperState
2. EventType
3. path
KeeperState包含Disconnected\SyncConnected\AuthFailed\ConnectedReadOnly\SaslAuthenticated\Expired等6种状态。
EventType包含五种状态:
1. None
2. NodeCreated
3. NodeDeleted
4. NodeDataChanged
5. NodeChildrenChanged
其中后四种用于表示ZNode的状态或者数据变更,而None则用于会话的状态变更。
EventType为None的Watch
SessionWatch实例描述了,初始化一个ZooKeeper实例时注册的Watcher接口。
将在连接时收到EventType为None,KeeperState为SyncConnected,path为null的Event。
将在失去连接时收到EventType为None,KeeperState为:Disconnected,path为null的Event。
ChildrenCallback
通过getChildren方法,可以设置ChildrenCallback,以便获得获得当子节点发生变化时的相关信息。
ChildrenCallback 的唯一接口:
` public void processResult(int rc, String path, Object ctx, List