有没有办法在zookeeper的两个进程中观看一个ZNode?

Is there way to watch one ZNode in two process in zookeeper?

我有 /math 是根节点(在两个进程中都设置了 Watcher)。我在进程A中创建子节点math/exam01,在进程B中创建子节点math/exam02(在创建子节点math/exam01之后)。我希望事件线程将由进程 A 中的 Watcher 触发。但是没有任何反应,能解释一下这是怎么回事吗?

我会尽量回答你的问题:

在进程 A 中,您在现有的 znode /math 上设置了一个 watch。这个watch是用来观察/math的子节点相关的事件,所以你应该用下面的命令来设置它们:

[PROCESS A]: ls -w /math

然后,您使用进程 A 的客户端为 /math/exam01 路径创建一个子节点,使用以下命令:

[PROCESS A]: create /math/exam01

您刚刚创建了 /math 的子节点,因此触发了事件 Watch。

然后您使用来自进程 B 的客户端在 /math/exam02 处创建 /math 的新子节点。该操作不会触发进程A中的任何Watch事件,因为触发器是One-time。如果您需要发送事件,在进程 A 中的第一个事件触发后,您应该 re-set 监视 /math

有关 ZooKeeper 手表的更多信息 here