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----+---+ +-V----------+
| | dequeue +---------------> cancel |
| | | _cancelJob | |
| +-----+------+ +------------+
| _startJob |
| |
| +----------+
| |
+---v----v---+ _terminateJob +------------+
| process +----------------------> terminate |
| | |(not implem)|
+-----+------+ +------------+
|
|
|
+-----v------+
| complete |
| |
+------------+
job.journalEntry
for each state (queue
, dequeue
, process
, complete
, reject
, cancel
) stores the time when transition to state occured. If several changes has occured, only the last time is stored(id
is job identifier job.id
):
,
For each group
and name
as provided in option
for createJob()
, journalEntries
are kept ar array in queue.journal
(newest is the first, oldest is the last).
Example (group
and name
not set, default
value is used):
journal: +2s
Up to maxJournalLength
option for createJob()
records are kept.
Example
You may find this example in demo
subdirectory of the package.
"use strict"; processenvDEBUG = 'queue,app';// + (process.env.DEBUG || '');var util = ;var debug = 'app'; //var Queue = require('express-queue');var Queue = ;var queue = activeLimit: 1 queuedLimit: 1 maxJournalLength: 4 ; // create jobsvar maxCount = 5 count = 0; var interval = ; // execute jobs queue; // Signal about jobs rejected due to queueLimit queue;
Credits
Links to package pages:
github.com npmjs.com travis-ci.org coveralls.io inch-ci.org
License
MIT