worque

0.11.2 • Public • Published

worque

AMQP-based work queue.

Build Status Coverage Status

Installation

npm i worque --save

Description

Each task = queue.

Publishing message = loading single worker with task.

NOTE: one-by-one task processing is guaranteed only with RabbitMQ 3.3 and higher.

Motivation

  • simple project bootstrap
  • task survives broker restarts
  • task waits for worker (handler) if it's offline
  • task can be scheduled (cron)
  • task can be retried with flexible and easy-to-specify retry period configuration
  • fluent and simple API

Example

var client = require('worque')('amqp://localhost');
 
// global (all tasks) events
client.on('task', console.log); // fired before handler
client.on('result', console.log); // fired after handler
client.on('failure', console.error); // fired if handler fails
 
// define task 'logthis' and provide handler
client('logthis').subscribe(function (message) {
    console.log(message);
});
 
// start 'logthis' task with params
client('logthis').publish({ something: 42 });
 
// setup scheduled task
client('recurrent task runs each minute').subscribe(function () {
    console.log('I run each minute');
}).schedule('0 * * * * *');
 
// will be retried (republished) 1 second after 1st failure
// 2 seconds after 2nd failure
// 3 seconds after 3d failure
client('retry 3 times if failed').subscribe(function (url) {
    return doRequestAndSaveToFile(url);
}).retry(1, 2, 3).publish('http://mysite.com');
 
process.on('SIGINT', function () {
    client.close();
});

License

MIT

Package Sidebar

Install

npm i worque

Weekly Downloads

11

Version

0.11.2

License

MIT

Last publish

Collaborators

  • titarenko