Node.jsでバックグラウンドジョブを作成して使用するにはどうすればよいですか?
2つのライブラリ(node-resqueとnode-worker)に出くわしましたが、もっと使用されているものがあるかどうか知りたいです。
私はこれについていくつかの調査をしました、そして私はそれをこのようにします。
インストール beanstalkd 。別のメッセージキュー、[〜#〜] but [〜#〜]これは DELAYED PUTS をサポートします。ソースからコンパイルする場合は、 libevent (memcachedのように)に依存するため、少し難しくなります。しかし、繰り返しになりますが、 バイナリパッケージ がたくさんあるので、ソースからコンパイルする必要はないと思います。たとえば、Ubuntuでは、次のコマンドを発行してbeanstalkdをインストールできます。
Sudo apt-get install beanstalkd
Beanstalkdクライアントライブラリをインストールします。私が見つけた最高のものは node-beanstalk-client でした。 Beanstalkdクライアントライブラリリストでは、このライブラリが言及されていない/言及されていないためです(次に、リストにエントリを追加できるので、これを追加します)。私がこのライブラリを他のライブラリよりも好む理由は次のとおりです。
したがって、インストールするには、 npm ( 書き込み方法 )をインストールした後、次のコマンドを発行するだけです。
npm install beanstalk_client
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
を開始します。 producer.js
を実行してから5秒(指定した遅延)、consumer.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
Kue を使用しています。
Kueは、redisに支えられたnode.jsの機能豊富な優先ジョブキューです。 Kueの重要な機能は、キューに入れられた、アクティブな、失敗した、完了したジョブを表示および管理するためのクリーンなユーザーインターフェイスです。