正常情况下 进程出现未捕获异常时候,会退出,
但有时候当工作进程比较重要,出现异常时候希望能够重启一个新进程继续工作,这时需要使用到守护进程
主要逻辑:主进程监听子进程的exit 事件,当子进程exit的时候,重新fork一个新的工作进程
var cluster = require('cluster');
let index = 0;
if (cluster.isMaster) {
var worker = cluster.fork();
//守护进程,当监听到 工作进程退出 的时候,重新fork 一个工作进程
worker.on("exit",function(){
cluster.fork();
})
// 守护进程,当监听到disconnect 的时候,重新fork 一个工作进程
//cluster.on('disconnect', function (worker) {
// cluster.fork();
//})
} else {
setInterval(function () {
console.log(index++);
// 当是5的倍数的时候 抛出异常
if (!(index % 5)) {
throw new Error("异常")
}
}, 1000)
}