Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
mini-queue
Advanced tools
Readme
Job queue
If you have different needs regarding the functionality, please add a feature request.
npm install --save mini-queue
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
):
{ id: 4,
new: 2017-11-10T08:37:17.428Z,
queue: 2017-11-10T08:37:17.428Z,
dequeue: 2017-11-10T08:37:17.941Z,
process: 2017-11-10T08:37:17.941Z,
complete: 2017-11-10T08:37:18.943Z },
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: { group:
{ name:
[ { id: 5,
new: 2017-11-10T08:37:17.929Z,
reject: 2017-11-10T08:37:17.929Z },
. . .
{ id: 2,
new: 2017-11-10T08:37:16.426Z,
queue: 2017-11-10T08:37:16.427Z,
dequeue: 2017-11-10T08:37:16.937Z,
process: 2017-11-10T08:37:16.937Z,
complete: 2017-11-10T08:37:17.941Z } ] } } +2s
Up to maxJournalLength
option for createJob()
records are kept.
You may find this example in demo
subdirectory of the package.
"use strict";
process.env.DEBUG = 'queue,app';// + (process.env.DEBUG || '');
var util = require('util');
var debug = require('debug')('app');
//var Queue = require('express-queue');
var Queue = require('../');
var queue = new Queue({ activeLimit: 1, queuedLimit: 1, maxJournalLength: 4 });
// create jobs
var maxCount = 5,
count = 0;
var interval = setInterval(function() {
var jobData = {};
// Create new job for the queue
// If number of active job is less than `activeLimit`, the job will be started on Node's next tick.
// Otherwise it will be queued.
var job = queue.createJob(
jobData, // we may pass some data to job when calling queue.createJob() function
{ group: 'group', name: 'name' } // group/name to be used for journal
);
if (++count >= maxCount) {
clearInterval(interval);
setTimeout(()=> { // after last job has finished
debug('journal:', util.inspect(queue.journal, {depth:3}));
}, 1500);
}
}, 500);
// execute jobs
queue.on('process', function(job, jobDone) {
debug(`queue.on('process'): [${job.id}]: status: ${job.status}, journalEntry: ${JSON.stringify(job.journalEntry)}`);
// Here the job starts
//
// It is also possible to do the processing inside job.on('process'), just be careful
// to call jobDone() callback once and only once.
//
// Value of job.data is set to value passed to queue.createJob()
//
// Imitate job processing which takes 1 second to be finished
setTimeout(function() {
// Call the callback to signal to the queue that the job has finished
// and the next one may be started
jobDone();
// Now on Node's next tick the next job (if any) will be started
}, 1000);
});
// Signal about jobs rejected due to queueLimit
queue.on('reject', function(job) {
debug(`queue.on('reject'): [${job.id}]: status: ${job.status}, journalEntry: ${JSON.stringify(job.journalEntry)}`);
});
github.com npmjs.com travis-ci.org coveralls.io inch-ci.org
MIT
FAQs
Job queue
The npm package mini-queue receives a total of 5,984 weekly downloads. As such, mini-queue popularity was classified as popular.
We found that mini-queue demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.