4.6 监听器原理
监听器原理简介
- 首先要有一个
main()线程 - 在
main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)。 - 通过
connect线程将注册的监听事件发送给Zookeeper。 - 在
Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。 Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。listener线程内部调用了process()方法。

监听器类型
在 Zookeeper 中, 所有读的操作都可以设置监听器. (getData(), getChildren(), exists()).
设置监听器的时候, 有三点需要注意:
设置一个监听器只能触发一次.
所以, 如果想一直监听的话, 需要在监听器的回调函数执行结束之后, 再次设置监听.
当事件发生的时候, 事件会发送给那个设计监听的客户端.
没有设置监听器的是不会得到事件的.
不同的监听数据是不一样的.
exists()可以监听到这个节点的创建, 删除, 和节点存储的数据的变化getData()可以监听到节点的删除,和节点存储的数据的变化getChildren()可以监听到节点的删除和节点的子节点的变化(创建和删除)