天天看點

Zookeeper如何正确設定和擷取watcher

watcher 設定是開發中最常見的,需要搞清楚watcher的一些基本特征,對于exists、getdata、getchild對于節點的不同操作會收到不同的 watcher資訊

state=-112 會話逾時狀态

state= -113 認證失敗狀态

state=  1 連接配接建立中

state= 2 (暫時不清楚如何了解這個狀态,zoo_associating_state)

state=3 連接配接已建立狀态

state= 999 無連接配接狀态

type=1 建立節點事件

type=2 删除節點事件

type=3 更改節點事件

type=4 子節點清單變化事件

type= -1 會話session事件

type=-2 監控被移除事件

對父節點的變更以及孫節點的變更都不會觸發watcher,而對watcher本身節點以及子節點的變更會觸發watcher,具體參照下表。

操作

方法

觸發watcher

watcher state

watcher type

watcher path

create目前節點

getdata

×

getchildren

3

4

exists

set目前節點

delete目前節點

2

create子節點

set子節點

delete子節點

恢複連接配接

1

-1

恢複連接配接session未逾時

-112

恢複連接配接session逾時

注:×表示否,√表示是。

更多參見 http://tech.uc.cn/?p=1189,不過該文章中第五節對event和state的說明有誤,請仔細辨識。