1.4.0 • Published 12 months ago
@imqueue/job v1.4.0
Simple Job Queue (@imqueue/job)
Simple job queue using JSON messaging for managing backand background jobs. Backed up by Redis.
Features
Based on @imqueue/core it provides Job Queue functionality including:
- Safe job processing - no data loss!
- Fast processing - by events, not timers, low resource usage.
- Supports gzip compression for job data (decrease traffic usage, but slower).
- Concurrent workers model supported, the same queue can have multiple consumers with no data loss and natural load-balancing.
- Scheduleable jobs - jobs can be delayed by specified time, granularity - milliseconds.
- Job expiration supported - job can live forever or specified time, granularity - milliseconds.
- Publisher/Worker/Both models of work with queues supported.
- TypeScript included!
Requirements
See requirements for @imqueue/core
Install
npm i --save @imqueue/jobUsage
import JobQueue, { JobQueuePublisher, JobQueueWorker } from '@imqueue/job';
// Standard job queue (both - worker and publisher) example
new JobQueue<string>({ name: 'TestJob' })
    .onPop(job => console.log(job))
    .start().then(queue => queue
        .push('Hello, world!')
        .push('Hello, world after 1 sec!', { delay: 1000 })
        .push('Hello, world after 2 sec!', { delay: 2000 })
        .push('Hello, world after 5 sec!', { delay: 5000 })
        .push('Hello, world after 10 sec!', { delay: 10000 }),
    );
// Job queue publisher-only example
new JobQueuePublisher<string>({ name: 'CustomTestJob' })
    .start().then(queue => queue
        .push('Hello, job world!')
        .push('Hello, job world after 1 sec!', { delay: 1000 })
        .push('Hello, job world after 2 sec!', { delay: 2000 })
        .push('Hello, job world after 5 sec!', { delay: 5000 })
        .push('Hello, job world after 10 sec!', { delay: 10000 }),
    );
// Job queue worker only example
new JobQueueWorker<string>({ name: 'CustomTestJob' })
    .onPop(job => console.log(job))
    .start()
    .catch(err => console.error(err));