Zookeeper JavaAPI Watch事件监听
•ZooKeeper 允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去,该机制是 ZooKeeper 实现分布式协调服务的重要特性。
•ZooKeeper 中引入了Watcher机制来实现了发布/订阅功能能,能够让多个订阅者同时监听某一个对象,当一个对象自身状态变化时,会通知所有订阅者。
•ZooKeeper 原生支持通过注册Watcher来进行事件监听,但是其使用并不是特别方便
需要开发人员自己反复注册Watcher,比较繁琐。
•Curator引入了 Cache 来实现对 ZooKeeper 服务端事件的监听。
•ZooKeeper提供了三种Watcher:
•NodeCache : 只是监听某一个特定的节点
•PathChildrenCache : 监控一个ZNode的子节点. (不监听孙子节点)
•TreeCache : 可以监控整个树上的所有节点,类似于PathChildrenCache和NodeCache的组合(监听一个节点的子节点包括后代节点)
NodeCache 监听 : 只是监听某一个特定的节点
/* 演示 NodeCache:给定一个节点注册监听器 */
@Test
public void testNodeCache() throws Exception {
// 1. 创建 NodeCache对象
// final 使用外部的版本必须在 对象前加 final 使用当前版本可以加 也可以不加
final NodeCache nodeCache = new NodeCache(client, "/app1");
// 2.注册监听
nodeCache.getListenable().addListener(new NodeCacheListener() {
@Override
public void nodeChanged() throws Exception {