赞
踩
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目录节点增加删除)时,Zookeeper会通知客户端。监听机制保证Zookeeper保存的任何的数据的任何改变都能快速的响应到监听了该节点的应用程序。
1)首先要有一个main()线程。
2)在main线程中创建Zookeeper客户端,这时就会创建两个线程。一个负责网络连接通信(connect),一个负责监听(listener)。
3)通过connect线程将注册的监听事件发送给Zookeeper。
4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
6)listener线程内部调用了process()方法。
1)监听节点数据的变化
get path [watch]
2)监听子节点增减的变化
ls path [watch]
1)在zookeeper103注册一个监听器,监听 /sanguo节点:
可以看到现在 /sanguo节点里面的值是diaocan
现在注册监听器:
在zookeeper101改变 /sanguo节点里面的值:
这时zookeeper103监听到了节点的值的变化:
在zookeeper101再修改一次 /sanguo里面的值:
发现在zookeeper103并没有监听到变化:
注意:在zookeeper101上再多次修改 /sanguo的值,zookeeper103上不会再收到监听。因为注册一次,只能监听一次。想再次监听,需要再次注册。
2)节点的子节点变化监听(路径变化):
在zookeeper103主机上注册监听 /sanguo节点的子节点变化:
在zookeeper101的 /sanguo创建一个子节点:
此时zookeeper103已经监听到 /sanguo子节点发生了变化:
注意:节点的路径变化,也是注册一次,生效一次。想多次生效,就需要多次注册。
1)删除一个结点:
2)如果想删除 /sanguo节点和这个节点下的所有子节点,不能用delete,要用deleteall:
3)查看节点状态:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。