2015-05-25 100 views
2

這是獲取znode數據的方法。默認的zookeeper觀察者做什麼?

public byte[] getData(String path, 
         boolean watch, 
         Stat stat) 
       throws KeeperException, 
         InterruptedException; 
  • 路徑 - 給定的路徑
  • 手錶 - 是否需要看這個節點
  • 統計 -

我好奇的第二個參數boolean watch節點的統計,主要是我把false那裏。但是,如果我通過true,Zookeeper會做什麼?據我所知,默認的觀察者將被調用。它有什麼作用?

回答

1

如果在znode的數據發生變化或znode被刪除的情況下通過查看,則會向客戶端發送一個事件。客戶端將調用默認的觀察者(你傳遞來構造Zookeeper客戶端對象)的對象的過程方法。過程方法傳遞了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要簡單得多,動物園管理員客戶端庫。你也可以試試http://mvnrepository.com/artifact/com.101tec/zkclient