{"id":45993,"library":"queue-worker","title":"queue-worker","description":"A RabbitMQ queue worker library for Node.js, version 2.1.0. Simplifies setting up job queues with configurable concurrency (jobsCount), retry attempts (attemptsCount), and delayed retries (attemptDelays). Supports custom success, fail, and error event handlers. Requires RabbitMQ and the 'rabbit-queue' package with scheduledPublish flag enabled. Differentiated by built-in attempt delay management and TypeScript type definitions.","status":"active","version":"2.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/Aristocr2t/queue-worker","tags":["javascript","rabbitmq","queue","worker","typescript"],"install":[{"cmd":"npm install queue-worker","lang":"bash","label":"npm"},{"cmd":"yarn add queue-worker","lang":"bash","label":"yarn"},{"cmd":"pnpm add queue-worker","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required peer dependency for RabbitMQ connection and message scheduling.","package":"rabbit-queue","optional":false}],"imports":[{"note":"Library is ESM-only; CommonJS require will fail.","wrong":"const { QueueWorker } = require('queue-worker')","symbol":"QueueWorker","correct":"import { QueueWorker } from 'queue-worker'"},{"note":"Rabbit is a named export from 'rabbit-queue' package.","wrong":"const Rabbit = require('rabbit-queue').default","symbol":"Rabbit","correct":"import { Rabbit } from 'rabbit-queue'"},{"note":"Type parameters specify the message type, exception type, and result type. Omitting them loses type safety.","wrong":"const worker = new QueueWorker(rabbit, queueName, options)","symbol":"QueueWorker type parameters","correct":"const worker = new QueueWorker<Message, Exception, Result>(rabbit, queueName, options)"}],"quickstart":{"code":"import { Rabbit } from 'rabbit-queue';\nimport { QueueWorker } from 'queue-worker';\n\nconst URL = process.env.RABBIT_URL ?? 'amqp://localhost';\nconst rabbit = new Rabbit(URL, { scheduledPublish: true });\n\ntype Message = { text: string };\ntype Exception = Error;\ntype Result = { ok: boolean };\n\nconst worker = new QueueWorker<Message, Exception, Result>(rabbit, 'my-queue', {\n  jobsCount: 5,\n  attemptsCount: 3,\n  attemptDelays: ['0', '1 min', '5 min'],\n});\n\nworker.handle(async ({ message }) => {\n  console.log(`Processing: ${message.text}`);\n  return { ok: true };\n});\n\nworker.on('success', (data: Message, result: Result) => {\n  console.log('Success:', data, result);\n});\n\nworker.on('fail', (data: Message, error: Exception) => {\n  console.error('Attempt failed:', data, error);\n});\n\nworker.on('error', (data: Message, errors: Exception[]) => {\n  console.error('All attempts failed:', data, errors);\n});\n\nworker.addItem({ text: 'hello' });\n\n// Or with custom delay\nworker.addItem({ text: 'delayed' }, { attemptsCount: 1, attemptDelays: ['10 min'] });","lang":"typescript","description":"Creates a RabbitMQ queue worker with typed messages, failure handling, and retry delays."},"warnings":[{"fix":"Ensure RabbitMQ is running and install 'rabbit-queue' as a peer dependency: npm install rabbit-queue. Initialize Rabbit with { scheduledPublish: true }.","message":"Requires RabbitMQ instance and 'rabbit-queue' package with scheduledPublish: true","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Set attemptDelays to cover all attempts or ensure the last element is a catch-all delay.","message":"attemptDelays array length determines retry schedule; if attempt index exceeds array length, last delay is reused.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Define the queue in RabbitMQ (e.g., via management UI or channel.assertQueue) before using queue-worker.","message":"Queue name must match an existing RabbitMQ queue or be created externally.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Always provide three type parameters: Message, Exception, and Result.","message":"TypeScript types are included, but incorrect generic usage may cause runtime errors.","severity":"breaking","affected_versions":">=2.0.0"}],"env_vars":null,"search_vec":"'2.1.0':12 'attempt':23,54 'attemptdelay':28 'attemptscount':24 'built':52 'built-in':51 'concurr':20 'configur':19 'custom':30 'definit':60 'delay':26,55 'differenti':49 'enabl':48 'error':34 'event':35 'fail':32 'flag':47 'handler':36 'javascript':61 'job':16 'jobscount':21 'librari':8 'manag':56 'node.js':10 'packag':44 'queue':2,6,17,43,63 'queue-work':1 'rabbit':42 'rabbit-queu':41 'rabbitmq':5,38,62 'requir':37 'retri':22,27 'scheduledpublish':46 'set':14 'simplifi':13 'success':31 'support':29 'type':59 'typescript':58,65 'version':11 'worker':3,7,64","created_at":"2026-06-07T12:57:45.098639+00:00","updated_at":"2026-06-07T12:57:45.098639+00:00","problems":[{"fix":"Run 'npm install queue-worker' and ensure import is 'import { QueueWorker } from 'queue-worker'","cause":"Package not installed or import path wrong.","error":"Cannot find module 'queue-worker'"},{"fix":"Install rabbit-queue: 'npm install rabbit-queue'. Import as: 'import { Rabbit } from 'rabbit-queue'","cause":"Rabbit imported incorrectly, or 'rabbit-queue' package missing.","error":"TypeError: Rabbit is not a constructor"},{"fix":"Install rabbit-queue: 'npm install rabbit-queue'","cause":"rabbit-queue not installed.","error":"Missing required peer dependency: rabbit-queue"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/Aristocr2t/queue-worker#readme","github":"https://github.com/Aristocr2t/queue-worker","docs":null,"changelog":null,"pypi":null,"npm":"queue-worker","openapi_spec":null,"status_page":null,"smithery":null,"categories":["messaging"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}