node-zookeeper-client getData只执行一次回调

时间:2017-03-21 09:32:52

标签: javascript node.js configuration apache-zookeeper

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

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

问题是当我更新节点(使用ZK-Web用户界面)时 - 观察者仅在我第一次更新数据时调用。如果我再次更新它 - 它不会被调用。 回调根本没有调用(仅在第一次运行时,甚至在第一次更新时都没有)。

问题是:

  1. 为什么观察者只在第一次更新时调用?
  2. 为什么回调仅在第一次运行时调用,而不是每次数据都发生变化?
  3. 我的代码:

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

    谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 手表是一次性触发器。请阅读ZooKeeper documentation about watches

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

  3. 因此,在任何情况下,您必须在触发时重新注册手表。阅读文档以更深入地了解使用手表时从ZooKeeper获得的保证。它可能对您的用例有用,也可能不重要。