mini-queue
Job queue
If you have different needs regarding the functionality, please add a feature request.
Installation
npm install --save mini-queue
Usage
QueueJob State Diagram (methods of JobQueue object)
======================
|
createJob |
+------V-----+
| new |
| |
+---+--+--+--+
| | | _rejectJob +------------+
| | +--------------------------------> reject |
| | | |
_startJob | | _queueJob +------------+
| +------------+
| |
| +-----v------+ _cancelJob
| | queue +-----------------+
| | | |
| +---+----^---+ |
| _dequeueJob | | |
| | | |
| | | _queueJob |
| +---v----+---+ _cancelJob +-V----------+
| | dequeue +---------------> cancel |
| | | | |
| +-----+------+ +------------+
| | _startJob
| |
| +----------+
| |
+---v----v---+ _terminateJob +------------+
| process +----------------------> terminate |
| | |(not implem)|
+-----+------+ +------------+
|
|
|
+-----v------+
| complete |
| |
+------------+
Example
You may find this example in demo
subdirectory of the package.
"use strict";
process.env.DEBUG = 'queue,app';
var debug = require('debug')('app');
var Queue = require('express-queue');
var queue = new Queue({ activeLimit: 1, queuedLimit: 1 });
var maxCount = 5,
count = 0;
var interval = setInterval(function() {
var jobData = {};
queue.createJob(jobData);
if (++count >= maxCount) {
clearInterval(interval);
}
}, 500);
queue.on('process', function(job, jobDone) {
debug('queue.on(\'process\'): ['+job.id+']');
setTimeout(function() {
jobDone();
}, 1000);
});
queue.on('reject', function(job) {
debug('queue.on(\'reject\'): ['+job.id+']');
});
Credits
Alexander
Links to package pages:
github.com npmjs.com travis-ci.org coveralls.io inch-ci.org
License
MIT