Zookeeper监视::子节点修改时没有通知

时间:2016-03-11 01:40:36

标签: apache-zookeeper

我们看到了zookeeper手表的问题。我们创建一个节点“/ newtest”,意图是在其中添加/修改节点。我们正在关注" / newtest“。我们的观察是,如果添加或删除了孩子,我们会收到通知,但如果孩子被修改,我们就不会收到通知

以下是zkCli.sh命令的输出

======

[zk:localhost:2181(CONNECTED)21] ls / newtest观看< ===以获取子节点和手表

[1,5,4]< === 1,5,4是子节点

[zk:localhost:2181(CONNECTED)24] set / newtest / 5 hello6 < ===更新节点“5”的数据,没有观看通知

cZxid = 0xc16

ctime = Fri Mar 11 01:03:29 UTC 2016

mZxid = 0xc78

mtime = Fri Mar 11 01:19:48 UTC 2016

pZxid = 0xc16

cversion = 0

dataVersion = 2

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 6

numChildren = 0

[zk:localhost:2181(CONNECTED)25] create / newtest / 6 hello6 < ===创建新节点

WATCHER ::

创建/ newtest / 6

WatchedEvent状态:SyncConnected类型:NodeChildrenChanged路径:/ newtest < ==观察者通知

[zk:localhost:2181(CONNECTED)26] ls / newtest观看< ===再次观看

[1,6,5,4]

[zk:localhost:2181(CONNECTED)27] set / newtest / 6 hello6 < ==更新节点“6”,无通知

cZxid = 0xc79

ctime = Fri Mar 11 01:19:59 UTC 2016

mZxid = 0xc86

mtime = Fri Mar 11 01:23:18 UTC 2016

pZxid = 0xc79

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 6

numChildren = 0

======

请提出解决方案。 Zookeeper版本是zookeeper.version = 3.4.6--1

1 个答案:

答案 0 :(得分:0)

我建议不要将zkCli.sh用于除测试和小/快速操作之外的任何其他操作。如果您想在修改子节点时收到通知,我建议您使用Apache Curator在Java中编写自己的观察者,更具体地说,使用Tree Cache编写自己的观察者。