Frage

Wie kann ich Hintergrundjobs in node.js erstellen und verwenden?

Ich bin auf zwei LIBs gestoßen (Knoten und Knotenarbeiter), möchte aber wissen, ob etwas mehr verwendet wird.

War es hilfreich?

Lösung

Ich habe einige Nachforschungen darüber gemacht und würde es so machen.

Konfiguration

Beantalkd

  1. Installieren Beantalkd. Eine andere Nachricht Warteschlange, ABER Dieser unterstützt Verspätete Puts. Wenn Sie aus der Quelle kompilieren, wird es etwas schwieriger, weil es davon abhängt libvent(wie Memcached). Aber andererseits glaube ich nicht, dass Sie es aus der Quelle zusammenstellen müssen, weil es viel gibt Binärpakete verfügbar. Zum Beispiel auf Ubuntu können Sie BeaneStalkd installieren, indem Sie den Befehl ausgeben:

    sudo apt-get install beanstalkd

Node-Beanstalk-Client

  1. Installieren Sie eine beanstalkd -Client -Bibliothek. Das Beste, was ich gefunden habe, war Node-Beanstalk-Client. Denn auf der Liste der Beantalkd -Client -Bibliothek wird diese Bibliothek nicht erwähnt (dann kann ich wieder Einträge zur Liste hinzufügen, also werde ich diese hinzufügen). Die Gründe, warum ich diese Bibliothek gegenüber den anderen bevorzuge, sind:

    1. NPM -Paket: Ich habe gerne ein NPM -Paket zur Installation der Clientbibliothek verwendet. Die anderen hatten keine.
    2. Aktive Entwicklung: Ich bevorzuge Bibliotheken, die später/mehr Commits haben.

Um es zu installieren, nachdem Sie installiert wurden NPM(der Schreibweg) Sie würden einfach den folgenden Befehl ausgeben:

npm install beanstalk_client

Code

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();
});

Starten Sie zuerst den Verbraucher:

node consumer.js 

Nächster Start producer.js. Fünf Sekunden (Verzögerung, die ich angegeben habe) nach der Ausführung producer.js, consumer.js verarbeitet die Nachricht.

Produzent.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();
    });
});

Um nur auszugeben:

node producer.js

Andere Tipps

Ich benutze Kue.

KUE ist eine feature -Rich -Prioritätsjob -Warteschlange für Node.js, die von Redis unterstützt werden. Eine wichtige Funktion von KUE ist die saubere Benutzeroberfläche für die Anzeige und Verwaltung von in die Warteschlange, aktiven, fehlgeschlagenen und abgeschlossenen Jobs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top