天天看点

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的说明有误,请仔细辨别。