【问题标题】:Zookeeper getChildren event is triggered only onceZookeeper getChildren 事件只触发一次
【发布时间】:2020-01-13 04:18:33
【问题描述】:

我在一个容器内有一个 Zookeeper 3.4 服务器,它侦听端口 2181。 每次从父节点添加或删除子节点时,我都想获得一个事件。

const zookeeper = require("node-zookeeper-client");
const client = zookeeper.createClient('localhost:2181');

function eventWatcher(event) {
    console.log(event.getType());
}

(async () => {
    client.connect();
    client.once('connected', () => {
        client.getChildren('/servers/live_nodes', eventWatcher,  function (error, children, stat) {
                if (error) {
                    console.log(error);
                    return;
                }
        });
    });
})();
const zookeeper = require("node-zookeeper-client");
const client = zookeeper.createClient('localhost:2181');

 //node removal code 
 client.remove("/servers/live_nodes/server1", (error) => {
        if(error) {
            console.error(error);
            serverAlive = true;
        }
    });

 //node creation code
 client.create("/servers/live_nodes/server1", null, zookeeper.CreateMode.EPHEMERAL, (error) => {
        if(error) {
            console.error(error);
            serverAlive = false;
        }
    });

仅触发第一个事件。不会触发后续事件(从 ./servers/live_nodes 添加/删除节点)。

【问题讨论】:

    标签: node.js apache-zookeeper


    【解决方案1】:

    Zookeeper 中的观察者是一次性触发器,因此您必须重新注册另一个才能获得另一个事件。

    这样的事情应该可以解决问题,但有些事件可能会丢失:

    function eventWatcher(event) {
           client.getChildren('/servers/live_nodes', eventWatcher,  function (error,children, stat) {
                    if (error) {
                        console.log(error);
                        return;
                    }
            });
    
    }
    
    client.getChildren('/servers/live_nodes', eventWatcher,  function (error,children, stat) {
                    if (error) {
                        console.log(error);
                        return;
                    }
    });
    

    更多信息请查看this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多