这是获取znode数据的方法。
public byte[] getData(String path,
boolean watch,
Stat stat)
throws KeeperException,
InterruptedException;
我很好奇第二个论点boolean watch
,大多数时候我把false
放在那里。但是,如果我通过true
,Zookeeper会怎么做?据我所知,将调用默认观察者。它做了什么?
答案 0 :(得分:1)
如果znode的数据发生更改,或者删除了znode,则会将if传递给客户端。客户端将调用默认观察程序(您传递以构造Zookeeper客户端对象)对象的进程方法将被调用。 process方法传递WatchedEvent对象。我们可以从事件对象获取eventType,znode路径(如果事件特定于znode)等。如果事件类型类似于" NodeDataChanged"例如,可以对Zookeeper进行调用以获取修改的数据并重新建立监视。基本上,默认观察者实现"过程"方法和"过程"方法有关于如何处理事件的逻辑。
您可以查看以下链接: http://zookeeper.apache.org/doc/r3.4.1/api/org/apache/zookeeper/WatchedEvent.html https://zookeeper.apache.org/doc/r3.3.3/api/org/apache/zookeeper/Watcher.html
BTW,zkclient是一个更简单的zookeeper客户端库。您也可以尝试http://mvnrepository.com/artifact/com.101tec/zkclient