4.6 监听器原理
监听器原理简介
- 首先要有一个
main()
线程 - 在
main
线程中创建Zookeeper
客户端,这时就会创建两个线程,一个负责网络连接通信(connet
),一个负责监听(listener
)。 - 通过
connect
线程将注册的监听事件发送给Zookeeper
。 - 在
Zookeeper
的注册监听器列表中将注册的监听事件添加到列表中。 Zookeeper
监听到有数据或路径变化,就会将这个消息发送给listener
线程。listener
线程内部调用了process()
方法。
监听器类型
在 Zookeeper 中, 所有读的操作都可以设置监听器. (getData(), getChildren(), exists()
).
设置监听器的时候, 有三点需要注意:
设置一个监听器只能触发一次.
所以, 如果想一直监听的话, 需要在监听器的回调函数执行结束之后, 再次设置监听.
当事件发生的时候, 事件会发送给那个设计监听的客户端.
没有设置监听器的是不会得到事件的.
不同的监听数据是不一样的.
exists()
可以监听到这个节点的创建, 删除, 和节点存储的数据的变化getData()
可以监听到节点的删除,和节点存储的数据的变化getChildren()
可以监听到节点的删除和节点的子节点的变化(创建和删除)