私のアプリはCPUを集中的に処理する必要があるため、バックグラウンドジョブとしてそれを行うことを考えています.
Express アプリと kue の両方を同じボックス (異なるコア) で実行したい。それ、どうやったら出来るの?また、メイン アプリとジョブ キューはどのように相互に通信するのでしょうか? それらは同じボックス上にあるため、http 要求を送信するのは非常に無駄に思えます。
複数の Node プロセス (Express サーバーとバックグラウンド タスク ハンドラー) を手動で、または や などのプロセス マネージャーを介して開始できpm2
ますforever
。またはchild_process.fork
Express アプリから使用して、CPU を集中的に使用するジョブを実行する新しい Node プロセスを開始します。
両方が別々のコアで実行されるという 100% の保証はありませんが、OS にすべてのスケジューリングを任せることができ、OS はおそらく正しいことを行うでしょう。
Kue に関しては、ジョブを保存するための仲介役としてRedisを使用します。Express アプリがそれにジョブを投稿すると、バックグラウンド タスクが各ジョブを取り出して処理し、オプションでメッセージを返信します。