2017-03-25 5 views
0

私は起動と停止の方法でnode clusterをブートストラップしようとしています。すべてのクラスタワーカーがいつ起きているかを知る方法?

私は次のように何かを書きたい:私のすべての労働者が実行しているとき、どのように私は正確に伝えることができ

myCluster.start().then(()=>{ 
    return myCluster.stop().then(()=>{console.log('smooth stop! nice.')}); 
}).catch(err=>{console.log('something went wrong')}); 

を?

PS:これは必ずしも約束である必要はありません。

private sendMaster(pid: number, msg: ClusterMessage) { 
    process.send({ pid, msg }); 
} 

self.server.listen(self.options.port,() => { 
     self.sendMaster(process.pid, ClusterMessage.WORKER_LISTENING); 
     resolve(); 
    }).on('error',() => { 
     logError('Failed to start the server on port %O', self.options.port); 
     reject(); 
}); 

、マスターコードで私はこのようなメッセージをつかむでしょう:

答えて

0

は、私が聞いている労働者とすぐにマスターに労働者からのメッセージを送信することにより、ソリューションを設計するために管理しました
cluster.on('message', (worker, data) => { 
    logInfo('Process %O listening on port %O', data.pid, self.options.port); 
    self.startedWorkersCount++; 
    if (self.startedWorkersCount === self.options.workers) { 
     logInfo('Server ready'); 
     resolve(self.startedWorkersCount); 
    } 
}); 

詳細を確認することができますhere

関連する問題