学习 ZooKeeper API 库 Curator(三):监控

Curator 提供了两种方式监听数据的变化 watched 和 usingWatcher。

watched

在调用链中增加 watched 方法调用设置监视点。设置的监视点将会通过注册的监听器发通知,通知将会以 WATCHED 事件传递给指定监听器。

client.getData().watched().forPath("/test");  
client.getChildren().watched().forPath("/test");  
client.getCuratorListenable().addListener(new CuratorListener() {  
    public void eventReceived(CuratorFramework curatorFramework, CuratorEvent curatorEvent) throws Exception {
        switch (curatorEvent.getType()) {
            case WATCHED:
                // 事件处理
                break;
            default:
                break;
        }
    }
});

usingWatcher

在调用链中增加 usingWatcher 方法调用设置监视点。当事件被触发,回调参数 CuratorWatcher 的 process 进行处理。

client.getData().usingWatcher(new CuratorWatcher() {  
    public void process(WatchedEvent watchedEvent) throws Exception {
        // 事件处理
    }
}).forPath("/test");
client.getChildren().usingWatcher(new CuratorWatcher() {  
    public void process(WatchedEvent watchedEvent) throws Exception {
        // 事件处理
    }
}).forPath("/test");