12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 'use strict';
- var cluster = require('cluster');
- var Utility = require('../Utility.js');
- var pkg = require('../../package.json');
- module.exports = function ClusterMode(God) {
-
- God.nodeApp = function nodeApp(env_copy, cb){
- var clu = null;
- console.log(`App [${env_copy.name}:${env_copy.pm_id}] starting in -cluster mode-`)
- if (env_copy.node_args && Array.isArray(env_copy.node_args)) {
- cluster.settings.execArgv = env_copy.node_args;
- }
- env_copy._pm2_version = pkg.version;
- try {
-
-
-
-
- clu = cluster.fork({pm2_env: JSON.stringify(env_copy), windowsHide: true});
- } catch(e) {
- God.logAndGenerateError(e);
- return cb(e);
- }
- clu.pm2_env = env_copy;
-
- clu.on('message', function cluMessage(msg) {
-
- if (msg.data && msg.type) {
- return God.bus.emit(msg.type ? msg.type : 'process:msg', {
- at : Utility.getDate(),
- data : msg.data,
- process : {
- pm_id : clu.pm2_env.pm_id,
- name : clu.pm2_env.name,
- rev : (clu.pm2_env.versioning && clu.pm2_env.versioning.revision) ? clu.pm2_env.versioning.revision : null,
- namespace : clu.pm2_env.namespace
- }
- });
- }
- else {
- if (typeof msg == 'object' && 'node_version' in msg) {
- clu.pm2_env.node_version = msg.node_version;
- return false;
- }
- return God.bus.emit('process:msg', {
- at : Utility.getDate(),
- raw : msg,
- process : {
- pm_id : clu.pm2_env.pm_id,
- name : clu.pm2_env.name,
- namespace : clu.pm2_env.namespace
- }
- });
- }
- });
- return cb(null, clu);
- };
- };
|