27

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

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

4

2 に答える 2

45

私はこれについていくつかの研究を行い、このようにします。

設定

豆の木

  1. beanstalkdをインストールします。別のメッセージキューですが、これは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。を実行してから 5 秒 (指定した遅延) 後にproducer.jsconsumer.jsメッセージが処理されます。

プロデューサー.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
于 2011-01-24T13:52:06.030 に答える
13

クエを使っています。

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

于 2013-02-05T21:32:32.520 に答える