Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. var cluster = require('cluster');
  2.  
  3. const PORT = 3000;
  4.  
  5. if (cluster.isMaster) {
  6.  
  7. const numWorkers = require('os').cpus().length;
  8.  
  9. console.log(`Master cluster setting up ${numWorkers} workers...`);
  10.  
  11. workers = [];
  12. for (let i = 0; i < numWorkers; i++)
  13. workers[i] = cluster.fork();
  14.  
  15. cluster.on('online', worker => {
  16. console.log(`Worker ${worker.process.pid} is online`);
  17. });
  18.  
  19. cluster.on('exit', (worker, code, signal) => {
  20. console.log(`Worker ${worker.process.pid} died with code ${code}`);
  21. console.log('Starting a new worker');
  22. workers[workers.indexOf(worker)] = cluster.fork();
  23. });
  24.  
  25. /* messages */
  26.  
  27. cluster.on('message', (worker, message, handle) => {
  28. console.log(`message from worker ${worker.process.pid}: ${message.message}`)
  29. });
  30.  
  31. setInterval(() => {
  32.  
  33. workers.forEach(worker => {
  34. worker.send(`hello from master to process ${worker.process.pid}`);
  35. });
  36.  
  37. }, 10000);
  38.  
  39. } else {
  40.  
  41. const app = require('express')();
  42.  
  43. app.all('/*', (req, res) => {
  44. process.send({message: 'hello from worker'});
  45. res.json({process: process.pid, message: 'Hello'}).end();
  46. })
  47.  
  48. app.listen(PORT, () => {
  49. console.log(`api on port ${PORT}, pid ${process.pid}`)
  50. });
  51.  
  52. /* messages */
  53.  
  54. process.on('message', message => {
  55. console.log(`message from master: ${message}`);
  56. });
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement