node.jsワーカー/バックグラウンドプロセス
-
16-10-2019 - |
質問
node.jsでバックグラウンドジョブを作成して使用するにはどうすればよいですか?
私は2つのLIB(ノードレスクとノードワーカー)に出会いましたが、もっと使用されているものがあるかどうか知りたいです。
解決
私はこれについていくつかの研究をしました、そして、私はこのようにそれをします。
設定
BeanStalkd
インストール BeanStalkd. 。別のメッセージキュー、 しかし これはサポートしています 遅延プット. 。ソースからコンパイルすると、それが依存するので少し難しくなります libevent(memcachedのように)。しかし、繰り返しになりますが、ソースからコンパイルする必要はないと思います。 バイナリパッケージ 利用可能。たとえば、ubuntuでは、コマンドを発行してBeanStalkdをインストールできます。
sudo apt-get install beanstalkd
ノードビーンシュタルククライアント
BeanStalkdクライアントライブラリをインストールします。私が見つけた最高のものは ノードビーンシュタルククライアント. 。 BeanStalkDクライアントライブラリリストでは、このライブラリは言及されていない/そうではないからです(再びリストにエントリを追加できるので、これを追加します)。私が他のライブラリよりもこのライブラリを好む理由は次のとおりです。
- NPMパッケージ: :NPMパッケージを使用してクライアントライブラリをインストールするのが好きでした。他の人は何も持っていませんでした。
- アクティブな開発: :私は後で/より多くのコミットメントがあるライブラリを好みます。
インストールした後、インストールしてください npm(書き込み方法)次のコマンドを発行するだけです。
npm install beanstalk_client
コード
Consumer.js
var client = require('beanstalk_client').Client;
client.connect('127.0.0.1:11300', function(err, conn) {
var reserve = function() {
conn.reserve(function(err, job_id, job_json) {
console.log('got job: ' + job_id);
console.log('got job data: ' + job_json);
console.log('module name is ' + JSON.parse(job_json).data.name);
conn.destroy(job_id, function(err) {
console.log('destroyed job');
reserve();
});
});
}
reserve();
});
最初に消費者を開始します:
node consumer.js
次のスタート producer.js
. 。実行後5秒(指定した遅延) producer.js
, consumer.js
メッセージを処理します。
producer.js
var client = require('beanstalk_client').Client;
client.connect('127.0.0.1:11300', function(err, conn) {
var job_data = {"data": {"name": "node-beanstalk-client"}};
var priority = 0;
var delay = 5;
var timeToRun = 1;
conn.put(priority, delay, timeToRun, JSON.stringify(job_data), function(err, job_id) {
console.log('put job: ' + job_id);
process.exit();
});
});
問題を開始するには:
node producer.js
他のヒント
私は使用しています キュー.
キューは、redisに裏付けられたnode.jsの豊富な優先順位のジョブキューです。 Kueの重要な機能は、キュー、アクティブ、失敗、および完了したジョブを表示および管理するためのクリーンなユーザーインターフェイスです。