08_zookeeper的客户端工具curator_watcher

【使用usingWatcher()】

//两个usingWatcher的传入参数不同
public interface Watchable<T> {
    T watched();

    T usingWatcher(Watcher var1);

    T usingWatcher(CuratorWatcher var1);
}

[提前写好两个实现类]

//实现原生的watcher接口实现
class MyWatcher implements Watcher{
    @Override
    public void process(WatchedEvent watchedEvent) {
        System.err.println("Watcher事件触发:"+watchedEvent.getPath());
    }
}

//实现curator的CuratorWatcher接口
class MyCuratorWatcher implements CuratorWatcher{
    @Override
    public void process(WatchedEvent watchedEvent) throws Exception {
        System.err.println("CuratorWatcher事件触发:"+watchedEvent.getPath());
    }
}

 【原生Watcher代码示例】

//watcher事件,当使用usingWatcher的时候,监听只会触发一次,监听完毕后销毁
client.getData()
        .usingWatcher(new MyWatcher())
        .forPath(nodePath);

System.in.read();  //暂停下线程

【运行结果】

【CuratorWatcher事件代码示例】

//watcher事件,当使用usingWatcher的时候,监听只会触发一次,监听完毕后销毁
client.getData()
        .usingWatcher(new MyCuratorWatcher())
        .forPath(nodePath);

System.in.read();  //暂停下线程

【运行结果】

与上面一致。

原文地址:https://www.cnblogs.com/HigginCui/p/9694332.html