簡體   English   中英

如何在Node.js中設置兩個意圖不同的工作程序?

[英]How to set up two workers in Node.js with different intentions?

傳統上,我使用:

if (cluster.isMaster) {
  cluster.fork();
  cluster.on('exit', function(worker, code, signal) {
    cluster.fork();
  });
}
if (cluster.isWorker) {
  ...
}

設置工作程序,但是說如果我希望兩台服務器在不同的端口上運行,而在發生錯誤時一台服務器不關閉另一台服務器,那么可能的方法是僅允許使用cluster進行這種設置。

對於要做不同工作的工人,根本不要使用群集。 集群適用於共享一個端口的多個進程,並且集群中所有進程均均衡負載。

如果您希望其他工作人員執行不同的工作,則只需使用child_process模塊​​以諸如child_process.fork()類的方式啟動您的工作人員,為他們提供不同的代碼,並使用可用於您與工作人員進行通信的任何數量的通信方法。 例如,每個工作人員可以在其端口上啟動其自己的http服務器,然后可以從該端口上的主進程與之通信。

這是一個簡單的.fork()示例,該示例說明了如何使用進程消息在兩者之間進行通信。 您也可以使用許多其他通信機制。

父代碼:

const { fork } = require('child_process');

const forked = fork('child.js');

forked.on('message', (msg) => {
  console.log('Message from child', msg);
});

forked.send({ hello: 'world' });

子代碼:

process.on('message', (msg) => {
  console.log('Message from parent:', msg);
});

let counter = 0;

setInterval(() => {
  process.send({ counter: counter++ });
}, 1000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM