【发布时间】: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 添加/删除节点)。
【问题讨论】: