@seedalpha/job-queue

Storage agnostic job queue

Usage no npm install needed!

<script type="module">
  import seedalphaJobQueue from 'https://cdn.skypack.dev/@seedalpha/job-queue';
</script>

README

JobQueue

Storage agnostic job queue

Changelog

2.1.2:

  • fix typo when setting timeout

2.1.1:

  • dont throw on connection problems, just reconnect
  • debug log

2.1.0:

  • support stop listening on job complete
  • fix tests

2.0.1:

  • fix tests seed-sqs paths

2.0.0:

  • custom job types (uses single queue; breaking API changes)
  • timeout stale jobs (2min default)
  • jobs emit error and timeout events to queue now (will trigger silent expiration)
  • setup npm to use NPM_AUTH
  • update docs

Prerequisites (for tests)

$ export AMAZON_ACCESS_KEY_ID=...
$ export AMAZON_ACCESS_KEY_SECRET=...
$ export SQS_QUEUE=...

Installation

$ npm install seed-job-queue --save
$ npm install seed-sqs --save # to use with sqs

Usage

// index.js

var Queue    = require('seed-sqs');
var JobQueue = require('seed-job-queue');

var queue = new Queue({
  name:   'staging',
  key:    process.env.AMAZON_ACCESS_KEY_ID,
  secret: process.env.AMAZON_ACCESS_KEY_SECRET
});

var jobs = new JobQueue(queue, { 
  timeout: 2 * 60 * 1000 
});

jobs.process(function(job) {
  jobt.type   // get job type 
  job.data    // get underlying job data
  job.done(); // to complete a job
  job.done('Error'); // to let job expire and retry
  job.done(null, true); // to complete job and stop processing
});

jobs.create('send-mail', data, function(error) {
  // job created
});

jobs.create('send-quick-mail', data, { timeout: 2000 }, function(error) {
  // job created, 
  // if it will take more than 2sec to sent that email
  // job will timeout and return back to the queue
});

Development

$ git clone git@github.com:seedalpha/job-queue.git
$ cd job-queue
$ npm install
$ npm test

Author

Vladimir Popov vlad@seedalpha.net

License

©2014 Seedalpha