web-dev-qa-db-ja.com

Node.jsワーカー/バックグラウンドプロセス

Node.jsでバックグラウンドジョブを作成して使用するにはどうすればよいですか?

2つのライブラリ(node-resqueとnode-worker)に出くわしましたが、もっと使用されているものがあるかどうか知りたいです。

27
donald

私はこれについていくつかの調査をしました、そして私はそれをこのようにします。

セットアップ

豆の木

  1. インストール beanstalkd 。別のメッセージキュー、[〜#〜] but [〜#〜]これは DELAYED PUTS をサポートします。ソースからコンパイルする場合は、 libevent (memcachedのように)に依存するため、少し難しくなります。しかし、繰り返しになりますが、 バイナリパッケージ がたくさんあるので、ソースからコンパイルする必要はないと思います。たとえば、Ubuntuでは、次のコマンドを発行してbeanstalkdをインストールできます。

    Sudo apt-get install beanstalkd

node-beanstalk-client

  1. Beanstalkdクライアントライブラリをインストールします。私が見つけた最高のものは node-beanstalk-client でした。 Beanstalkdクライアントライブラリリストでは、このライブラリが言及されていない/言及されていないためです(次に、リストにエントリを追加できるので、これを追加します)。私がこのライブラリを他のライブラリよりも好む理由は次のとおりです。

    1. Npmパッケージ:クライアントライブラリをインストールするためにnpmパッケージを使用するのが好きでした。他には何もありませんでした。
    2. アクティブな開発:コミットが遅い/多いライブラリが好きです。

したがって、インストールするには、 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を開始します。 producer.jsを実行してから5秒(指定した遅延)、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
45
Alfred

Kue を使用しています。

Kueは、redisに支えられたnode.jsの機能豊富な優先ジョブキューです。 Kueの重要な機能は、キューに入れられた、アクティブな、失敗した、完了したジョブを表示および管理するためのクリーンなユーザーインターフェイスです。

13
webjay