{"id":49122,"library":"redis-streams-queue","title":"redis-streams-queue","description":"Redis Streams Queue is a high-performance queue library built on Redis Streams, version 2.1.1. It offers reliable message delivery with consumer groups, exactly-once semantics, and built-in retries. Compared to Bull or Kue, it leverages Redis Streams' native features for better scalability and fault tolerance. The library is actively maintained with monthly releases.","status":"active","version":"2.1.1","language":"javascript","source_language":"en","source_url":"https://github.com/redisq/redisq","tags":["javascript","redis","queue","streams"],"install":[{"cmd":"npm install redis-streams-queue","lang":"bash","label":"npm"},{"cmd":"yarn add redis-streams-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add redis-streams-queue","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Redis client required to interact with Redis server","package":"redis","optional":false}],"imports":[{"note":"Named export since v2; default import removed.","wrong":"import Queue from 'redis-streams-queue'","symbol":"Queue","correct":"import { Queue } from 'redis-streams-queue'"},{"note":"ESM-only; CJS require will fail.","wrong":"const Consumer = require('redis-streams-queue').Consumer","symbol":"Consumer","correct":"import { Consumer } from 'redis-streams-queue'"},{"note":"Message is part of main module, not a subpath export.","wrong":"import { Message } from 'redis-streams-queue/Message'","symbol":"Message","correct":"import { Message } from 'redis-streams-queue'"}],"quickstart":{"code":"import { Queue, Consumer } from 'redis-streams-queue';\nimport { createClient } from 'redis';\n\nconst client = createClient({ url: process.env.REDIS_URL ?? 'redis://localhost:6379' });\nawait client.connect();\n\nconst queue = new Queue(client, 'my-queue');\nconst consumer = new Consumer(client, 'my-queue', 'group1', { consumerName: 'worker1' });\n\n// Producer\nawait queue.add({ task: 'process', data: { id: 1 } });\n\n// Consumer\nawait consumer.listen((message) => {\n  console.log('Received:', message.data);\n  return message.ack();\n});","lang":"typescript","description":"Demonstrates creating a queue, adding a message, and consuming with auto-acknowledgment using Redis client."},"warnings":[{"fix":"Swap argument order: Queue(client, name).","message":"Queue constructor signature changed in v2: new Queue(client, streamName) instead of new Queue(streamName, client).","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Always pass options object as second argument.","message":"Queue.add() without options is deprecated; use Queue.add({ ... }, { group: 'group1' }) for group safety.","severity":"deprecated","affected_versions":">=2.1.0"},{"fix":"Use async/await and ensure ack() is awaited.","message":"Consumer function must return a Promise when calling ack() inside callback; otherwise message may auto-ack prematurely.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Convert to ESM (type: module) or use dynamic import().","message":"Library is ESM-only since v2; importing with require() throws 'ERR_REQUIRE_ESM'.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Await client.connect() before instantiating Queue.","message":"Redis client must be connected before creating Queue; otherwise throws 'Client is not ready'.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"search_vec":"'2.1.1':20 'activ':58 'better':50 'built':15,35 'built-in':34 'bull':40 'compar':38 'consum':27 'deliveri':25 'exact':30 'exactly-onc':29 'fault':53 'featur':48 'group':28 'high':11 'high-perform':10 'javascript':63 'kue':42 'leverag':44 'librari':14,56 'maintain':59 'messag':24 'month':61 'nativ':47 'offer':22 'perform':12 'queue':4,7,13,65 'redi':2,5,17,45,64 'redis-streams-queu':1 'releas':62 'reliabl':23 'retri':37 'scalabl':51 'semant':32 'stream':3,6,18,46,66 'toler':54 'version':19","created_at":"2026-06-07T17:00:10.055035+00:00","updated_at":"2026-06-07T17:00:10.055035+00:00","problems":[{"fix":"Use `new Queue(client, name)`.","cause":"Using Queue as a function instead of constructor.","error":"TypeError: Class constructor Queue cannot be invoked without 'new'"},{"fix":"Use import syntax or set type: module in package.json.","cause":"CJS require() used on ESM-only package.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"},{"fix":"Ensure Queue.createGroup() is called or use Consumer with autoGroup: true.","cause":"Consumer group not created before consumption.","error":"ReplyError: NOGROUP No such consumer group '...' in XREADGROUP"}],"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/redisq/redisq#readme","github":"https://github.com/redisq/redisq","docs":null,"changelog":null,"pypi":null,"npm":"redis-streams-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage","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}}