node-zookeeper-client getData只执行一次callback

我在我的node.js服务器上使用node-zookeeper-client

当我尝试使用getData方法观看znode数据时,它在第一次执行时工作正常。

问题是当我更新节点(使用ZK-Web用户界面) – 观察者只在我第一次更新数据时调用。 如果我再次更新 – 它不会调用。 callback不会调用(只在第一次运行时,甚至不在第一次更新时)。

问题是:

  1. 为什么观察者只在第一次更新时调用?
  2. 为什么callback只在第一次运行时调用,而不是每次数据改变?

我的代码:

 zkClient = zookeeper.createClient('zookeeper-server'); zkClient.connect(); zkClient.getData('/path/to/config', (event) => console.log(event), (error, data, stat) => myService.exec(data)); 

谢谢!

  1. 手表是一次性触发器。 有关手表的更多信息,请参阅ZooKeeper文档 。

  2. 这也回答你的第二个问题:它只触发一次。

所以在任何情况下,您必须在触发时重新注册手表。 阅读文档以更深入地了解使用手表时从ZooKeeper获得的保证。 这对您的使用情况可能会或可能不重要。