2.1.0 • Published 7 months ago
@itcutives/queue-helper v2.1.0
Queue Helper
- Easy swappable abstract interface for BeeQueue and Bull.
Install
npm i @itcutives/queue-helper
Bull
const Bull = require('@itcutives/queue-helper/src/Bull');
enqueue
Note: Does not support enqueueAt
function
bull.enqueue(data);
BeeQueue
const BeeQueue = require('@itcutives/queue-helper/src/BeeQueue');
queue task
BeeQueue.enqueue(data);
BeeQueue.enqueueAt(data, timestamp);
Example
Task
const BeeQueue = require('@itcutives/queue-helper/src/BeeQueue');
class SendMessage extends BeeQueue {
static get NAME() {
return 'SendMessage';
}
// processing function
static Process(job) {
return new Promise((resolve) => {
const seconds = 10;
const timeout = seconds * 1000;
setTimeout(() => {
resolve(JSON.stringify({ [SendMessage.NAME]: job.data }));
}, timeout);
});
}
}
module.exports = SendMessage;
Queuing task jobs
isWorker
: flag to distinguish betweenworker
andscheduler
processes
const SendMessage = require('./tasks/SendMessage');
const config = {
redis: {
port: '6379',
host: '192.168.1.1',
db: '0',
password: '',
},
isWorker: false,
};
const sendMessage = new SendMessage(config);
(async () => {
// adding to queue
await sendMessage.enqueue({ messageId: 1 });
// scheduling
const dt = new Date();
dt.setSeconds(dt.getSeconds() + 40);
await sendMessage.enqueueAt({ messageId: 2 }, dt);
await sendMessage.close();
})();
Setting up worker
removeOnSuccess
: Enable to have this worker automatically remove its successfully completed jobs from Redis, so as to keep memory usage down.activateDelayedJobs
: Activate delayed jobs once they've passed their delayUntil timestamp.concurrency
: sets the maximum number of simultaneously active jobs for this processor. It defaults to 1.
const SendMessage = require('./tasks/SendMessage');
const config = {
redis: {
port: '6379',
host: '192.168.1.254',
db: '0',
password: '',
},
removeOnSuccess: true,
activateDelayedJobs: true,
concurrency: 10,
};
const sendMessage = new SendMessage(config);