node-job-queue

1.1.0 • Public • Published

Node Job Queue

A class to facilitate queuing and running jobs. Right now it only implements a synchronous queue, but it might be extended in the future to enable async jobs.

Basic Usage

First install: npm install --save node-job-queue

This class is meant to be extended (think of an abstract class in other languages).

const JobQueue = require('node-job-queue');
 
class MyJobQueue extends JobQueue {
 
    runJob(job) {
 
        return new Promise( ... );
    }
}
 
const myJobs = new MyJobQueue(startDelay);
 
myJobs.addJob('Whatever your runJob method expects. Must be truthy');
 
myJobs.on('jobFinish', (job, jobQueue) => {
 
    console.log(job + ' just finished.');
    console.log('Now the queue looks like this: ' + jobQueue);
});

Subclasses are expected to override the runJob() method. That method must return a Promise that resolves when the job is finished (or rejects on errors).

API Details

The constructor takes the following arguments:

  • startDelay (optional, default: 0): Wait this many milliseconds before starting the first job. After the first job has started there is no delay between jobs.
  • jobDelay (optional, default: 0): Wait this many milliseconds in between jobs as we process the queue.

The class emits the following events that you can listen for.

  • jobStart: Triggered when a queued job starts. Listener args: (job, jobQueue)
  • jobFinish: Triggered when a job completes. Listener args: (job, jobQueue)
  • jobAdd: Triggered when a job is added to the queue. Listener args: (job, jobQueue)
  • jobRemove: Triggered when a job is removed from the queue. Listener args: (jobQueue)
  • queueError: Triggered when a job Promise rejects or when other errors occur. Listener args: (error, jobQueue)

The only "public" methods are:

  • addJob: Pass in anything (string, object, function, etc.) that your runJob method expects to process. Must be a truthy value (i.e. jobs.addjob(0) will fail).
  • getQueue: Returns an array of jobs currently in the queue.

Package Sidebar

Install

npm i node-job-queue

Weekly Downloads

0

Version

1.1.0

License

Apache-2.0

Last publish

Collaborators

  • dominicp