{"library":"node-resque","title":"node-resque","description":"node-resque is an opinionated, Redis-backed (version 2.6.0 and up required) background job processing system for Node.js, currently stable at version 9.5.0. It provides features like priority queues, plugins, locking, and delayed jobs, implementing an API largely compatible with Ruby's Resque and Sidekiq. The project actively maintains and releases new versions, primarily consisting of dependency bumps and minor fixes in recent changelogs. Since version 6, the codebase transitioned to TypeScript, though transpiled JavaScript is still provided. Version 5 introduced `async/await`, making Node.js 8.0.0+ a minimum requirement and breaking compatibility with older versions due to changes in API paradigms.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install node-resque"],"cli":null},"imports":["import { Worker } from 'node-resque';","import { Scheduler } from 'node-resque';","import { Queue } from 'node-resque';","import type { Job } from 'node-resque';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { Worker, Scheduler, Queue } from \"node-resque\";\n\nconst connectionDetails = {\n  pkg: \"ioredis\",\n  host: \"127.0.0.1\",\n  password: null,\n  port: 6379,\n  database: 0,\n};\n\nconst jobs = {\n  'testJob': {\n    perform: async (a: number, b: number) => {\n      const result = a + b;\n      console.log(`Job 'testJob' performed with ${a} + ${b} = ${result}`);\n      return result;\n    },\n  },\n  'delayedJob': {\n    perform: async (message: string) => {\n      console.log(`Delayed job received: ${message}`);\n      return `Processed: ${message}`;\n    }\n  }\n};\n\nasync function boot() {\n  const queue = new Queue({ connection: connectionDetails, jobs });\n  await queue.connect();\n\n  const worker = new Worker({ connection: connectionDetails, queues: ['default'], jobs });\n  worker.on('start', () => console.log('Worker started'));\n  worker.on('end', () => console.log('Worker ended'));\n  worker.on('success', (queue, job, result) => console.log(`Job success in ${queue}: ${JSON.stringify(job)} => ${result}`));\n  worker.on('failure', (queue, job, error) => console.error(`Job failure in ${queue}: ${JSON.stringify(job)} => ${error}`));\n  worker.on('error', (error, queue, job) => console.error(`Worker error: ${error} in ${queue} for ${JSON.stringify(job)}`));\n\n  const scheduler = new Scheduler({ connection: connectionDetails, jobs });\n  scheduler.on('start', () => console.log('Scheduler started'));\n  scheduler.on('end', () => console.log('Scheduler ended'));\n  scheduler.on('error', (error, queue, job) => console.error(`Scheduler error: ${error} in ${queue} for ${JSON.stringify(job)}`));\n\n  await worker.connect();\n  await worker.start();\n  await scheduler.connect();\n  await scheduler.start();\n\n  // Enqueue a simple job\n  await queue.enqueue('default', 'testJob', [1, 2]);\n\n  // Enqueue a delayed job to run in 5 seconds\n  await queue.enqueueIn(5 * 1000, 'default', 'delayedJob', ['This is a delayed message!']);\n\n  console.log('Jobs enqueued. Waiting for workers...');\n\n  // Keep the process alive for a bit to allow jobs to process\n  setTimeout(async () => {\n    await worker.end();\n    await scheduler.end();\n    await queue.end();\n    console.log('Node-resque example finished.');\n    process.exit();\n  }, 10000);\n}\n\nboot().catch(console.error);\n","lang":"typescript","description":"This quickstart demonstrates how to set up a node-resque worker, scheduler, and queue, connect them to Redis, define and enqueue jobs (including delayed jobs), and handle job outcomes.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}