Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
MongoDB-backed job queue for Node.js
JavaScript
branch: master

Merge pull request #39 from jpwilliams/master

Let workers choose tasks based on their given callbacks
latest commit e35e41152c
Scott Nelson authored
Failed to load latest commit information.
example Function spacing
lib Updating worker dequeuing to send callbacks
test Cancel the poll timeout so the worker will stop more quickly
.gitignore Initial commit
LICENSE Cleanup
README.md Function spacing
package.json v0.3.1

README.md

monq

Monq is a MongoDB-backed job queue for Node.js.

Usage

Connect to MongoDB by specifying a URI or providing host, port and database options:

var monq = require('monq');
var client = monq('mongodb://localhost:27017/monq_example');

Enqueue jobs by supplying a job name and a set of parameters. Below, the job reverse is being placed into the example queue:

var queue = client.queue('example');

queue.enqueue('reverse', { text: 'foobar' }, function (err, job) {
    console.log('enqueued:', job.data);
});

Create workers to process the jobs from one or more queues. The functions responsible for performing a job must be registered with each worker:

var worker = client.worker(['example']);

worker.register({
    reverse: function (params, callback) {
        try {
            var reversed = params.text.split('').reverse().join('');
            callback(null, reversed);
        } catch (err) {
            callback(err);
        }
    }
});

worker.start();

Events

Workers will emit various events while processing jobs:

worker.on('dequeued', function (data) { … });
worker.on('failed', function (data) { … });
worker.on('complete', function (data) { … });
worker.on('error', function (err) { … });

Install

npm install monq

Tests

npm test

You can optionally specify the MongoDB URI to be used for tests:

MONGODB_URI=mongodb://localhost:27017/monq_tests make test
Something went wrong with that request. Please try again.