Introduction to Kue
Kue is a priority job queue backed by Redis that is specifically designed for Node.js. It features a powerful user interface, built-in job monitoring, and job prioritization. This article explores how to make the most of Kue with dozens of useful API examples and an app that employs these APIs.
Basic Setup
const kue = require('kue'); const queue = kue.createQueue();
Creating Jobs
const job = queue.create('email', { title: 'Welcome email for user', to: 'user@example.com', template: 'welcome-email' }).save(error => { if (!error) console.log('Job saved: ', job.id); });
Processing Jobs
queue.process('email', (job, done) => { sendEmail(job.data, done); });
Job Events
job.on('complete', result => { console.log('Job completed with data ', result); }).on('failed attempt', (errorMessage, doneAttempts) => { console.log('Job failed with error ', errorMessage); }).on('failed', errorMessage => { console.log('Job failed with error ', errorMessage); }).on('progress', (progress, data) => { console.log('Job completed with progress ', progress, data); });
Priority Jobs
const job = queue.create('email', { title: 'email, important', to: 'user@example.com', template: 'important-emails' }).priority('high').save();
Delayed Jobs
const job = queue.create('email', { title: 'delayed email', to: 'user@example.com', template: 'delayed-email' }).delay(60000).save(); // Delay of 1 minute
App Example
const express = require('express'); const kue = require('kue'); const queue = kue.createQueue(); const app = express(); app.get('/send-email', (req, res) => { const email = req.query.email; const job = queue.create('email', { title: 'Welcome email for user', to: email, template: 'welcome-email' }).save(error => { if (!error) res.send('Email job created with ID ' + job.id); }); }); queue.process('email', (job, done) => { console.log('Processing email for:', job.data.to); sendEmail(job.data, done); }); function sendEmail(data, done) { setTimeout(() => { console.log(`Email sent to ${data.to}`); done(); }, 3000); } app.listen(3000, () => { console.log('Server listening on port 3000'); });
By following these examples, you can effectively leverage Kue in your Node.js application for efficient job queue management. The prioritization, delayed jobs, and processing mechanisms provided by Kue make it an indispensable tool for many use cases.
Hash: 4555a0b49453e7e3eeecc511fac9c38f5d24a31c97d21d77a4fd9da0754965bc