在Zookeeper中有没有办法在两个过程中观看一个ZNode?

问题描述

我有/math是根节点(在两个进程中都对此设置了Watcher)。我在进程A中创建子节点math/exam01,并在进程B中创建子节点math/exam02(在创建子math/exam01之后)。我希望事件线程将由进程A中的Watcher触发。但是什么也没发生,可以解释一下这是怎么回事?

解决方法

我将尝试关注您的问题:

在过程A中,您在现有znode /math上设置了手表。该手表将观察与/math的子znode相关的事件,因此您应该使用以下命令进行设置:

[PROCESS A]: ls -w /math

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

[PROCESS A]: create /math/exam01

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

然后,您使用流程B中的客户端在/math处创建/math/exam02的新子节点。此操作不会触发进程A中的任何Watch事件,因为触发是一次性。如果您需要发送事件,则在进程A的第一个事件触发之后,您应该为/math重置手表。

有关ZooKeeper手表here的更多信息。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...