介绍
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知该客户端。
监听节点变化
监听 创建、删除 子节点、子节点事件
修改节点数据,不会监听到
启动第1个客户端
执行下面命令:
ls /services watch
启动第2个客户端
执行下面命令:
create /services/notice http://192.168.1.103:8080
只有 创建、删除子节点时,才会向 第1个客户端 发通知
观察第1个客户端
显示如下:
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/services
接收到 NodeChildrenChanged 子节点改变事件
注意:哪个客户端执行了监听,当节点改变时,该客户端才能接收到通知
监听节点数据改变
监听修改节点数据事件
启动第1个客户端
执行下面命令
get /services/notice watch
watch 参数表示监听 /services/notice 节点的变化,一有改动(数据改变、被删除、子目录节点增加删除),zookeeper就会通知该客户端
启动第2个客户端
执行下面命令:
set /services/notice http://192.168.1.200:8080
修改 /services/notice节点的数据为 http://192.168.1.200:8080
观察第1个客户端
第1个客户端显示如下:
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/services/notice
接收到 NodeDataChanged 节点数据改变事件
在第2个客户端再次修改
执行下面命令:
set /services/notice http://192.168.1.201:8080
观察第1个客户端
第1个客户端 不会接收到通知,需要 再次执行监听命令