我在我的node.js服务器上使用node-zookeeper-client
。
当我尝试使用getData
方法观看znode数据时,它可以在第一次执行时正常工作。
问题是当我更新节点(使用ZK-Web
用户界面)时 - 观察者仅在我第一次更新数据时调用。如果我再次更新它 - 它不会被调用。
回调根本没有调用(仅在第一次运行时,甚至在第一次更新时都没有)。
问题是:
我的代码:
zkClient = zookeeper.createClient('zookeeper-server');
zkClient.connect();
zkClient.getData('/path/to/config',
(event) => console.log(event),
(error, data, stat) => myService.exec(data));
谢谢!
答案 0 :(得分:0)
手表是一次性触发器。请阅读ZooKeeper documentation about watches。
这也回答了你的第二个问题:它只触发一次。
因此,在任何情况下,您必须在触发时重新注册手表。阅读文档以更深入地了解使用手表时从ZooKeeper获得的保证。它可能对您的用例有用,也可能不重要。