Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Minimalistic node.js work queue backed by redis
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
redis
test
.gitignore
README.md
index.js
package.json

README.md

minwq

Minimalistic Node.JS Work Queue, backed by Redis. (>=2.6.* redis required with Lua support)

npm install minwq

Usage

var minwq = require("minwq")

// Create a new store
var store= new minwq([options]);

// Optional
// You can provide a queue suffix for all jobs for namespacing purposes.
var store = new minwq({
    prefix: "myapp",
});

// If you need to provide custom redis clients (due to authentication or because you just want to), you can override createClient function of store;
minwq.prototype.createClient = function() {
    return redis.createClient(..whatever);
}

Pushing - Push a new job to a queue

  • queue [required] - Name of the queue
  • data [required] - Job payload
  • delay [optional] - Delay job execution (in milliseconds)
  • unique [optional] - If provided, only a single living job can have the unqiue token, additional push requests will fail.
  • replace [optional] - Boolean. If a unique key is provided and a duplicate job is pushed, it is ignored by default. Provide replace: true to replace the older job with new one.
  • callback(err, jobid) - Gets called when the job is created

store.push({
    queue: "email",
    data: {
        to: "foo@bar.com",
        subject: "Foo",
        text: "Bar"
    },
    delay: 100,
    unique: "unqiue token",
}, callback);

Poping - Pop a job from queue

  • ttl [optional] - Job retry delay (in milliseconds).

If a job takes more than ttl milliseconds to complete, it will be requeued. No TTL means the hob will be removed from queue immediately when the pop function gets called.


store.pop({
    queue: "email",
    ttl: 10000
}, function(err, job) {
    // job.data contains the job payload
    console.log(job.data);

    // after finishing the job, you need to remove it explicitly from the queue:
    job.remove(callback);
});

license

MIT

Something went wrong with that request. Please try again.