Zookeper + Curator:监视节点删除/删除监视

G.D*_*rov 2 java apache-zookeeper apache-curator

我正在使用带有 curator 2.12.0 的 Zookeeper。

我通过使用观察者调用 getChildren (我事先不知道完整的节点路径)来成功观察新节点,该观察者提交任务以再次使用观察者调用 getChildren 。现在我想观看节点删除并且仅删除。我用观察者调用 checkExists 。但是,如果节点由于某种原因不存在,它实际上将成为节点创建的观察者,这在我的情况下永远不会发生。所以我会留下越来越多的“鞭打”观察者,我想这会浪费一些资源。

如何仅在节点存在时删除观察者或添加观察者?

Ran*_*alt 5

ZooKeeper 3.4.x 不支持观察者删除。观察者仅在触发时才会被移除。ZooKeeper 3.5.x 添加了对观察者删除的支持。如果您迁移到 ZK 3.5.x 和 Curator 3.x/4.x,您可以使用观察器删除 API。(注意:我是 Apache ZooKeeper 的主要作者)。