有没有办法同步检查mongod实例(使用mongoclient)是否仍在运行?
我的mongoclient模块中有一个db.on('close')
处理程序,在mongod正常退出的情况下工作,但如果我终止服务器进程,我的节点应用程序将完全挂起,无法恢复正常职责。所有请求都被阻止,没有超时。
当mongod再次启动时,应用程序将恢复正常,所以如果等待时间过长,肯定会有一些事情可以杀死应用程序。
我只能想到同步这样做,因为再次回调db.runCommand({serverStauts: 1})
肯定会陷入同一状态。
答案 0 :(得分:1)
我将db.on('close')
的类似句柄附加到'错误'事件中,它就像一个魅力。
继承我使用的代码(在mongoclient.open内部)
db.on('error', function() {
close(); // calls mongoclient.close()
return callback('Lost MongoDB!', null);
});