【问题标题】:node-zookeeper-client getData execute callback only oncenode-zookeeper-client getData 只执行一次回调
【发布时间】:2017-08-12 21:08:26
【问题描述】:

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

当我尝试使用 getData 方法查看 znode 数据时,它在第一次执行时运行良好。

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

问题是:

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

我的代码:

zkClient = zookeeper.createClient('zookeeper-server');
zkClient.connect();

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

谢谢!

【问题讨论】:

  • 你能用我的答案吗?否则,请随时发表评论,我会详细说明/讨论。

标签: javascript node.js configuration apache-zookeeper


【解决方案1】:
  1. 手表是一次性触发器。在ZooKeeper documentation about watches 中阅读更多信息。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多