node.js でバックグラウンド ジョブを作成して使用するにはどうすればよいですか?
2 つのライブラリ (node-resque と node-worker) に遭遇しましたが、他に使用されているものがあるかどうかを知りたいです。
node.js でバックグラウンド ジョブを作成して使用するにはどうすればよいですか?
2 つのライブラリ (node-resque と node-worker) に遭遇しましたが、他に使用されているものがあるかどうかを知りたいです。
私はこれについていくつかの研究を行い、このようにします。
beanstalkdをインストールします。別のメッセージキューですが、これは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
。を実行してから 5 秒 (指定した遅延) 後にproducer.js
、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 は、redis に支えられた機能豊富な node.js の優先ジョブ キューです。Kue の重要な機能は、キューに入れられたジョブ、アクティブなジョブ、失敗したジョブ、および完了したジョブを表示および管理するためのクリーンなユーザー インターフェイスです。