默认的zookeeper观察者做什么?

时间:2015-05-25 06:56:53

标签: java apache-zookeeper

这是获取znode数据的方法。

public byte[] getData(String path,
                      boolean watch,
                      Stat stat)
               throws KeeperException,
                      InterruptedException;
  • 路径 - 给定路径
  • 观看 - 是否需要观看此节点
  • stat - 节点的统计信息

我很好奇第二个论点boolean watch,大多数时候我把false放在那里。但是,如果我通过true,Zookeeper会怎么做?据我所知,将调用默认观察者。它做了什么?

1 个答案:

答案 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