Сообщение от работника к работнику в кластере nodejs - PullRequest
0 голосов
/ 31 мая 2018

Когда я создаю кластерное приложение, например

var cluster = require('cluster');

if (cluster.isWorker) {
  console.log('Worker ' + process.pid + ' has started.');
}

if (cluster.isMaster) {
  console.log('Master ' + process.pid + ' has started.');

  // Fork workers.
  for (var i = 0; i < require("os").cpus().length; i++) {
    var worker = cluster.fork();
  }
}

, а затем запускаю его с pm2 в режиме кластера

pm2 start index.js -i 0

Моя isMaster часть никогда не запускается, я предполагаю, что этоЭто связано с тем, что pm2 является мастером при запуске моего приложения, поэтому оно никогда не становится мастером, поэтому возникает проблема.Мне нужно иметь возможность общаться между моими работниками, потому что они поддерживают соединения через веб-сокеты, и это кажется единственным способом вещания.Какие есть варианты?

Если я запускаю его без режима кластера (pm2 start index.js), тогда все, кажется, выполняется должным образом, но тогда я получаю только один процесс в pm2 list, который является обломом, если естьспособ обойти это и заставить pm2 отображать все дочерние процессы отдельно без использования кластерного режима. Я бы тоже был доволен этим решением.

1 Ответ

0 голосов
/ 31 мая 2018

Если вы хотите использовать process.message, вы не сможете использовать режим кластера pm2, поскольку process.message отправляет сообщения мастеру.

Если вы хотите использовать режим кластера pm2, вам необходимоиспользуйте другой способ связи между работниками, такой как Redis, RabbitMQ, Unix Sockets.

. Существуют некоторые пакеты, которые позволяют очень легко настроить связь IPC, например: узел-1011 * IPC *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...