我有/math
是根节点(在两个进程中都设置了Watcher(。我在进程A中创建了子节点math/exam01
,在进程B中创建了个子节点math/exam02
(在创建了子math/exam01
之后(。我预计事件线程将在进程A中由Watcher触发。但什么都没发生,可以解释一下这会发生什么吗?
我会试着回答你的问题:
在过程A中,您在现有的znode/math
上设置了一个手表。此手表用于观察与/math
的子节点相关的事件,因此您应该使用以下命令进行设置:
[PROCESS A]: ls -w /math
然后,使用进程a中的客户端为/math/exam01
路径创建一个子节点,使用以下命令:
[PROCESS A]: create /math/exam01
您刚刚创建了/math
的子节点,因此触发了事件监视。
然后使用进程B中的客户端在/math/exam02
创建/math
的新子节点。此操作不会触发进程A中的任何监视事件,因为触发器是一次。如果您需要发送一个事件,在进程A中的第一个事件触发后,您应该重新设置/math
的监视。
有关ZooKeeper手表的更多信息,请点击此处。