Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

redis-smq

weyoss7kMIT8.3.1TypeScript support: included

A simple high-performance Redis message queue for Node.js.

redis, message queue, message-queue, message, queue, job queue, job-queue, jobs, redis-smq, priority, priority queue, priority-queue, scheduler, broker, message broker, message-broker

readme

RedisSMQ

Latest Release Code Coverage

A High-Performance Redis Simple Message Queue for Node.js.

The source code and documentation for RedisSMQ are in the main redis-smq repository.

License

This project is licensed under is released under the MIT License.

changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

8.3.1 (2025-05-06)

⚡ Performance Improvements

  • redis-smq: optimize and clean up LUA scripts for better Redis performance (1f8b128)

8.3.0 (2025-05-04)

🐛 Bug Fixes

  • redis-smq: make message deletion more resilient to race conditions and inconsistent states (3c07bae)

📝 Documentation

  • redis-smq: update class references (d30542e)

♻️ Code Refactoring

  • redis-smq: improve callback patterns and use new async utils (8cff0d2)

8.2.1 (2025-04-22)

🐛 Bug Fixes

  • redis-smq: use correct cursor for SSCAN operation, clean up (33828ed)

📝 Documentation

  • redis-smq: add pageSize to IQueueMessagesPageParams typing (32bf04f)
  • redis-smq: improve logging and documentation (ed477db)

✅ Tests

  • redis-smq: add new tests for queue message storage implementations (5697e58)

8.2.0 (2025-04-20)

✨ Features

  • redis-smq: enhance logging with detailed debug information (3935682)

🐛 Bug Fixes

  • redis-smq: await async queue consumers retrieval in test (0b1f727)

📝 Documentation

  • redis-smq: fix typos and enhance API documentation (aabf2fa)
  • redis-smq: update configuration examples (906193e)
  • update logs documentation link (9561f31)
  • update redis-smq references (79bdc4c)
  • update redis-smq-common references (d8d9fc3)

8.1.0 (2025-04-16)

🐛 Bug Fixes

  • redis-smq: prevent duplicate message publishing for scheduled tasks (18b1bd9)

📝 Documentation

  • redis-smq: update documentation and interfaces (f917cd9)

♻️ Code Refactoring

  • redis-smq: improve queue message management system with storage abstractions (20d9985)
  • redis-smq: rename IQueueMessages interface to IQueueMessageManager (505b555)

8.0.3 (2025-04-14)

🚀 Chore

  • redis-smq-common: enhance Redis server management with CLI and scripts (1fec53e)

📝 Documentation

  • fix ERedisConfigClient import, update installation instruction (6d4cb62)

8.0.2 (2025-04-14)

📝 Documentation

  • reorganize and enhance documentation across packages (212fe75)

8.0.1 (2025-04-13)

📝 Documentation

  • redis-smq: update links to REST API and Web UI documentation (77a923d)

♻️ Code Refactoring

  • redis-smq: improve redis-keys module with better organization and documentation (850116d)
  • redis-smq: update key prefix with version-based naming scheme (6af3840)

8.0.0 (2025-04-13)

Note: Version bump only for package redis-smq

8.0.0-rc.36 (2025-04-11)

♻️ Code Refactoring

  • redis-smq-common: download and use pre-built Redis binaries (9a3d244)

8.0.0-rc.35 (2025-03-22)

Note: Version bump only for package redis-smq

8.0.0-rc.34 (2025-03-22)

Note: Version bump only for package redis-smq

8.0.0-rc.33 (2025-03-22)

📦‍ Build System

  • update .npmignore files to properly include source files (8c7ec7d)

8.0.0-rc.32 (2025-03-22)

📦‍ Build System

  • update .npmignore files to include only essential files (9f537a0)

8.0.0-rc.31 (2025-03-22)

⚠ BREAKING CHANGES

  • merge redis-server and net utils into redis-smq-common

♻️ Code Refactoring

  • merge redis-server and net utils into redis-smq-common (3591e20)

8.0.0-rc.30 (2025-03-21)

🚀 Chore

  • migrate to monorepo structure (8ef9888)

📝 Documentation

  • update README files with latest release and coverage badges (0efb786)

✅ Tests

  • remove unused data directory parameter from startRedisServer (46af2f4)

8.0.0-rc.29 (2025-02-14)

Bug Fixes

  • deps: regenerate package-lock.json (dc55c81)

Documentation

  • api: update API documentation and references (08f85ae)
  • contributing: update guidelines and improve language (c2feb57)
  • README: update installation and usage instructions (cfe19e4)

Codebase Refactoring

  • remove unnecessary factory patterns (3ed3a7d)
  • tests: update imports and usage of EventBus and RedisClient (f9dca11)

Misc

  • deps: update redis-smq-common to 3.0.0-rc.17 (324d6f1)

8.0.0-rc.28 (2025-02-05)

Bug Fixes

  • message: revert back shutdown method to arrow function (c4e5ceb)

Documentation

  • api: enhance class documentation with detailed descriptions and examples (67f8a21)
  • api: separate error classes from main classes (4aa850e)
  • README: update HTTP REST API reference link (9e20a6c)
  • update logo, improve content readability (7c921d4)

Codebase Refactoring

  • improve code structure and readability (5b4a47c)

Changelog

8.0.0-rc.27 (2025-01-09)

Continuous Integration

  • fix broken CHANGELOG.md for v8.0.0-rc.26 (a20b40e)

8.0.0-rc.26 (2025-01-09)

Documentation

Codebase Refactoring

  • use queue-scoped workers instead of global ones (ada94e0)

Continuous Integration

  • add support for node.js v22 (a15d62e)
  • upgrade eslint and other deprecated dependencies (c948298)

8.0.0-rc.25 (2024-07-07)

Documentation

  • add a link to redis-smq-rest-api (a1ab6fc)

Misc

  • make redis-smq-common a peer dependency (3b7dbab)

8.0.0-rc.24 (2024-05-15)

Bug Fixes

  • namespace: replace generic error in getNamespaceQueues() (aa9c8e5)
  • queue-rate-limit: always validate queue existence (538cf78)

Documentation

  • add new error classes reference (6c39625)

Codebase Refactoring

  • queue-rate-limit: move QueueRateLimit.set() logic to LUA (d104a9c)
  • queue: return the original error instance (14228ec)

8.0.0-rc.23 (2024-05-10)

Bug Fixes

  • use namespaced errors (637096b)
  • validate queue delivery model before adding consumer groups (eebcae7)

Documentation

  • add new error classes reference (5f7427d)
  • update Message API reference (9c1fa7a)

Tests

  • use QueueMessagesConsumerGroupIdRequiredError class (efb9821)

8.0.0-rc.22 (2024-05-04)

Features

  • use more granular error classes for reporting errors (2cc06c1)

Bug Fixes

  • exchange: use more granular error classes for reporting errors (3b3e640)

Documentation

  • add missing error classes (e16ffea)

8.0.0-rc.21 (2024-04-29)

Bug Fixes

  • message: correct logic for deleting multiple messages by IDs (fdb39d6)

Documentation

  • improve RC release status description, clean up (98910dc)
  • update examples (d80beb2)

Codebase Refactoring

  • optimize imports (29a0efb)
  • remove unused error classes and clean up (15bd959)
  • shorten imports (3bfb8f1)

Tests

Misc

8.0.0-rc.20 (2024-03-24)

Bug Fixes

  • include missing enums when exporting esm/cjs modules (2ee6802)

8.0.0-rc.19 (2024-03-24)

Documentation

  • fix incorrect generated anchor texts (c4f523f)

8.0.0-rc.18 (2024-03-24)

⚠ BREAKING CHANGES

Documentation

  • update documentation and API reference (3baaee6)

Codebase Refactoring

8.0.0-rc.17 (2024-01-30)

Documentation

  • add missing error classes (753331e)
  • simplify and unify class/method naming and referencing (0299b31)

Codebase Refactoring

  • improve MessageHandler error handling (957d257)

8.0.0-rc.16 (2024-01-28)

Features

  • allow running/sandboxing message handlers using worker threads (53095bd)

Bug Fixes

  • export message handler errors (26d2689)

Documentation

  • ConsumeMessageWorker: update docs and clean up (140322e)
  • fix broken links (aad9010)
  • update messages and queues documentation (7c3d06e)

Codebase Refactoring

  • ConsumeMessageWorker: improve typings (66c6ca9)

Tests

  • allow running/sandboxing message handlers using worker threads (79e6886)

8.0.0-rc.15 (2024-01-25)

Features

  • add Pub/Sub delivery model, refactor and clean up (47affa1)

Documentation

  • add a notification about the latest release, clean up (904f196)
  • add Pub/Sub delivery model, refactor and clean up (32db9dd)
  • clean up (c7d13a6)

Misc

  • bump up redis-smq-common to v3.0.0-rc.8 (d411849)
  • bump up redis-smq-common to v3.0.0-rc9 (d372e9d)

8.0.0-rc.14 (2024-01-03)

Documentation

  • add new diagrams and update existing ones (f5182b1)
  • event-listeners: add a link to IRedisSMQConfig interface (a7635c5)
  • scale down diagrams (c3b37e4)
  • update exchange diagrams (9dc05d6)

Codebase Refactoring

  • event-listeners: clean up (d9195e4)
  • exchanges: improve typings (97665fe)
  • message: handle various errors when deleting a message (a4505ae)

Tests

  • message: handle various errors when deleting a message (ecf301b)

8.0.0-rc.13 (2023-12-23)

⚠ BREAKING CHANGES

  • event-listeners: unify consumer/producer event listeners

Documentation

  • event-listeners: update documentation (71100d3)

Codebase Refactoring

  • event-listeners: unify consumer/producer event listeners (9e1a181)

Tests

  • event-listeners: unify consumer/producer event listeners (2d14a07)

8.0.0-rc.12 (2023-12-18)

Misc

8.0.0-rc.11 (2023-12-18)

Documentation

  • IConsumableMessage: clean up (5b5ce3a)

Codebase Refactoring

  • MessageEnvelope: clean up (72140f6)
  • rename _createRMessage to _createConsumableMessage (7a138fd)

Tests

  • ConsumableMessage: increase code coverage (3960c6e)

8.0.0-rc.10 (2023-12-17)

⚠ BREAKING CHANGES

  • add ProducibleMessage/ConsumableMessage/MessageEnvelope

Features

  • add ProducibleMessage/ConsumableMessage/MessageEnvelope (4a3eec7)

Documentation

  • add ProducibleMessage/ConsumableMessage/MessageEnvelope (55aa68e)
  • QueueMessages: fix outdated class reference (e6ae499)
  • update examples (bbccf7c)

Tests

  • add ProducibleMessage/ConsumableMessage/MessageEnvelope (2961a22)

Misc

8.0.0-rc.9 (2023-12-11)

Documentation

Codebase Refactoring

  • MessageEnvelope: improve setPriority/getPriority typings (91c44f0)

Tests

  • MessageEnvelope: improve setPriority/getPriority typings (20fd6e5)

8.0.0-rc.8 (2023-12-11)

⚠ BREAKING CHANGES

  • Message: remove Message.MessagePriority, add EMessagePriority
  • QueueMessages: move message methods to Message,add MessageEnvelope

Features

  • Message: add getMessageStatus() method (fda81fa)

Bug Fixes

  • Message: export missing error classes (29e8817)

Documentation

  • update documentation and examples (8efb082)

Codebase Refactoring

  • Message: remove Message.MessagePriority, add EMessagePriority (702a01d)
  • QueueMessages: move message methods to Message,add MessageEnvelope (f71f0d0)

Tests

  • Message: add getMessageStatus() method (76e97c4)
  • Message: remove Message.MessagePriority, add EMessagePriority (88a1368)
  • QueueMessages: move message methods to Message,add MessageEnvelope (932a88e)

8.0.0-rc.7 (2023-12-09)

⚠ BREAKING CHANGES

  • QueueMessages: remove redundant method deleteMessage()

Documentation

  • QueueMessages: remove redundant method deleteMessage() (cdeb454)

Codebase Refactoring

  • QueueMessages: remove redundant method deleteMessage() (af21dff)

Tests

  • QueueMessages: remove redundant method deleteMessage() (dfa3792)

8.0.0-rc.6 (2023-12-09)

⚠ BREAKING CHANGES

  • QueueMessages: rename deleteMessagesById to deleteMessageById

Documentation

  • QueueMessages: rename deleteMessagesById to deleteMessageById (81cfb72)

Codebase Refactoring

  • QueueMessages: rename deleteMessagesById to deleteMessageById (b3baf71)

8.0.0-rc.5 (2023-12-03)

Documentation

Codebase Refactoring

8.0.0-rc.4 (2023-12-02)

Documentation

  • clean up outdated examples (dd1c68b)

Misc

  • move redis-smq-common from dev-deps to deps (675880d)

8.0.0-rc.3 (2023-12-02)

Bug Fixes

  • scheduler: handle unacked messages with retry delay correctly (a97b145)

Documentation

  • update Message reference (1cff3e3)
  • update TRedisSMQEvent reference (5afa22e)

Tests

  • message: add new test cases covering message status (9eec7e9)

8.0.0-rc.2 (2023-11-27)

⚠ BREAKING CHANGES

  • events: use typed events, remove legacy events
  • add message status, return message IDs for produced messages

Features

  • add message status, return message IDs for produced messages (56566bf)
  • events: use typed events, remove legacy events (5f5a34f)

Documentation

  • README.md: update features description (4ac300e)
  • update configuration.md (83ce680)
  • use typed events, remove legacy events (7c899f8)

Tests

  • add message status, return message IDs for produced messages (8e3c228)
  • use typed events, remove legacy events (5d85cb0)

8.0.0-rc.1 (2023-11-21)

Codebase Refactoring

  • pass keyQueueMessages as a key for SCHEDULE_MESSAGE script (f9f69b3)

Tests

  • fix unpredictable error throwing when deleting a namespace (4126670)

Misc

  • update lint-staged configuration (9543401)

8.0.0-rc.0 (2023-11-20)

⚠ BREAKING CHANGES

  • use latest redis-smq-common release, fix breaking changes

Features

  • allow to track a published message by its ID (5f702d2)

Bug Fixes

  • exchange: fix json argument typings for _fromJSON() (55bf8cc)

Documentation

  • add missing error classes reference, clean up (106b6d0)
  • api: improve IQueueProperties description (4ffeee3)
  • fix empty links (dfc4ae9)
  • fix javascript/typescript examples (4cb2eb1)
  • queue: update IQueueProperties interface reference (631f239)
  • README.md: add pre-release notice (458fc57)
  • README.md: fix typo (3abf1e2)
  • README.md: update minimal supported Redis version (2c3ea00)
  • README: fix heading hierarchy (6dc0bd5)
  • update docs (188679e)
  • update examples (ac4b0b5)

Codebase Refactoring

  • queue: use friendly keys for queue properties object (9e88f54)
  • use latest redis-smq-common release, fix breaking changes (e347d4d)

Tests

  • fix breaking changes from latest redis-smq-common (30a6099)
  • fix QueueMessageNotFoundError checking (6053cee)
  • fix tests (561f0d0)

Misc

  • add npm scripts (34b4883)
  • bump up redis-smq-common to v3.0.0-rc.6 (f177b95)
  • bump up type-coverage to v2.27.0 (5140727)
  • fix incorrect imports (ba82774)
  • update both .gitignore and .npmignore files (3e84387)
  • update package-lock.json (77c761a)
  • update project copyright annotation (4080ac0)

Continuous Integration

  • drop support for redis server 2.8 and 3 (9ef8ade)
  • update minimal supported versions for nodejs and redis (13b3197)

7.2.3 (2023-03-26)

  • test(consumer-heartbeat): update tests (4332153)
  • refactor(consumer-heartbeat): clean up and improve API (20fc1b1)

7.2.2 (2023-03-25)

  • test(workers): update tests (c22f1bb)
  • perf(workers): use offset/count for schedule and watchdog workers (e78ecdb)
  • build: bump up redis-smq-common to v2.0.0 (c90050d)
  • build: clean up (61851a9)

7.2.1 (2023-02-15)

  • build: update deps (e362d7c)
  • fix: use path.resolve() to fix 'no such file or directory' error (b713fbe)
  • build: bump up redis-smq-common to v1.0.6 (fc25b15)

7.2.0 (2023-01-06)

  • build: fix NPM vulnerability warnings (e2ca247)
  • build: bump up redis-smq-common to v1.0.5 (cc08fe7)
  • docs(readme): update documentation (3713643)
  • refactor(message-state): improve getSetExpired() logic (bb6f262)
  • test(queue): test settings parsing compatibility with v7.1 (0656217)
  • refactor(queue): move out settings parsing logic from getSettings() (cf4ba86)
  • fix(queue): Keep compatibility with v7.1 queue settings schema (d49735e)
  • docs(queue-manager): update queue.getSettings() reference (09214a4)
  • chore: update license (6016483)
  • docs(queues): improve documentation (494a0ce)
  • docs(queue-manager): update docs (77d2e64)
  • fix(examples): use save() method to create queues (9026923)
  • test(queue-manager): test FIFO queues (b97dc4d)
  • refactor(queue-manager): clean up (7f2d693)
  • refactor(message-manager): refactor and clean up (4f55431)
  • feat(queue-manager): allow to create and use FIFO queues (853a29b)
  • docs(message-manager): update scheduled messages API reference (7fa3d23)

7.1.3 (2022-10-26)

  • test(FanOutExchangeManager): test binding queues of different types (d2e287c)
  • fix(FanOutExchangeManager): forbid binding queues of different types (0df6bdc)

7.1.2 (2022-10-22)

  • fix(FanOutExchangeManager): fix unbindQueue() transaction handling (dec63de)
  • fix(FanOutExchangeManager): fix bindQueue() transaction handling (afbdde6)
  • docs(queues): fix typos (08f29c0)
  • docs(queues): add queues.md reference, clean up (3219eb8)
  • docs: improve documentation, add missing links (c740e11)

7.1.1 (2022-10-11)

  • docs(message-exchanges): update docs (19d7dd3)
  • docs: update README (63b2fe6)

7.1.0 (2022-10-06)

  • docs: update README.md (8734e49)
  • build: update npm dependencies (4225c50)
  • test(FanOutExchangeManager): increase code coverage (df4c693)
  • refactor(FanOutExchangeManager): improve unbindQueue() logic (c1440a5)
  • docs: update docs (508430f)
  • fix: fix typing error (05c1575)
  • test: increase code coverage (c4ba4f3)
  • refactor: rename saveExchange() to createExchange() (995ca03)
  • refactor: improve TQueueSettings typing (413f4d3)
  • refactor: bump up redis keys version (3389216)
  • refactor: add EQueueSettingType, remove KEYQUEUE_SETTINGS* keys (600199c)
  • refactor(queue-manager): update queue.create() reply payload (f3a12d1)
  • feat(FanOutExchangeManager): add saveExchange(), deleteExchange() (1ce22cc)
  • refactor(redis-keys): clean up validateRedisKey() (e921540)
  • fix(FanOutExchange): fix bindingParams validation (327d045)
  • test(exchange): increase code coverage (f5f5d95)
  • feat(exchange): allow retrieving fanout exchange list (8a96b17)
  • refactor(exchange): improve exchange tag naming (a089738)
  • refactor(message): improve message.exchange typing (9ce281a)
  • refactor(queue-manager): clean up (ce5ab8e)
  • docs(message): update MessageMetadata references (5041a85)
  • test(message): update MessageMetadata references (9888918)
  • refactor(message): rename MessageMetadata to MessageState, clean up (2de18b4)
  • docs(exchange): improve documentation (718a80a)
  • docs(producer): update docs (1965a75)
  • docs(exchange): fix typos (93b4c8e)
  • test(exchange): test exchanges with unmatched queues (d836eab)
  • fix(exchange): return an error for exchanges with unmatched queues (e89ce06)
  • docs(message): add missing method references (c723ec2)
  • docs(exchange): update docs (1dc02a4)
  • refactor(exchange): rename FanOutExchangeManager methods (f981241)
  • docs(exchange): add FanOutExchangeManager reference (9cecc89)
  • test(exchange): update fanout-exchange tests (be75519)
  • feat(exchange): add FanOutExchangeManager (f8168a4)
  • refactor(exchange): rename files (fd9d906)
  • build: update workflow names (7b1b545)
  • docs(readme): display the status of codeql.yml workflow (94eb97a)
  • perf(redis-keys): fix inefficient regex complexity (dcb4f1f)
  • build: set up code scanning (be0dd02)
  • docs(exchange): update message-exchanges.md (49436af)
  • test(exchange): fix test errors (f3aa786)
  • docs(exchange): fix typos (a62a732)
  • fix(redis-keys): enforce a redis key to start with a letter (a-z) (ecb7493)
  • docs(exchange): update docs (wip) (6d3eaee)
  • fix(exchange): export DirectExchange/TopicExchange/FanOutExchange classes (c070f3c)
  • test(exchange): increase code coverage (063582c)
  • refactor(exchange): add and use InvalidExchangeDataError (482e093)
  • docs(readme): add reference to current release documentation (747e4e3)
  • docs(producer): update producer.produce() parameters (938976e)
  • fix: fix various typings issues (9c51445)
  • chore: update examples (3628813)
  • refactor: update tests (1456c5a)
  • test(exchange): test fanout and topic exchanges (54c081b)
  • feat(queue-manager): allow to bind/unbind a queue to an exchange (cd91109)
  • refactor(exchange): remove code redundancies and clean up (2dc2cba)
  • chore: bump up redis-smq-common to v1.0.4 (5181ad7)
  • feat(exchange): implement missing methods of TopicExchange class (e2119b5)
  • feat(redis-keys): allow redis keys to include a dot (92b8b05)
  • perf(queue-manager): use sscan instead of smembers (8f491f4)
  • feat(exchange): implement direct, fanout, and topic exchanges (1617e9b)
  • chore: bump up redis-smq-common to 1.0.3 (d7f4aba)
  • chore: clean up (ee88201)

7.0.7 (2022-08-10)

  • Bump up redis-smq-common to v1.0.2 (ff385ad)
  • Update docs (3871e8f)

7.0.6 (2022-08-08)

  • Improve consumer/producer shutdown handling (36278ce)
  • Update docs (51dfd16)
  • Update examples (208934b)
  • Fix tests (573e340)
  • Add and use ProducerNotRunningError error class (e89facd)
  • Fix a potential MaxListenersExceededWarning exception throwing (011a21b)
  • Make producers to be run manually before producing messages (c989449)

7.0.5 (2022-07-20)

  • Remove code redundancies (55eec79)
  • Update event listeners docs (e308848)
  • Refactor IEventListener interface, clean up (14dbf30)

7.0.4 (2022-07-14)

  • Fix dev dependencies (e42d072)
  • Update installation info (12c6170)
  • Make redis-smq-common as a peer dependency (ade08af)

7.0.3 (2022-07-13)

  • Fix consuming-messages/test00012 (4c9dfb8)

7.0.2 (2022-07-13)

  • Bump up redis-smq-common to v1.0.1 (e3fbb10)
  • Bump up typescript to v4.7.4 (0f69254)
  • Fix npm vulnerability warnings (9925be0)
  • Clean up examples (72ea0fb)

7.0.1 (2022-06-18)

  • Update migrating.md (9065d5f)
  • Update README.md (4cfb653)

7.0.0 (2022-06-18)

  • Fix typing issue (cd8bf6a)
  • Bump up redis-smq-common to v1.0.0 (02c353d)
  • Update callback vs promise vs async/await benchmarks (6fca49c)
  • Update README.md (7fbdcbf)

7.0.0-rc.8 (2022-06-09)

  • Update docs (96a45e7)
  • Test consumers/producers event listeners (856e12d)
  • Implement consumers/producers event listeners (6f5d603)

7.0.0-rc.7 (2022-06-07)

  • Update redis keys prefix (a6ca852)
  • Use codecov instead of coveralls (d8b5f83)
  • Improve consuming-messages/test00013 (5cd823c)
  • Improve consuming-messages/test00010 (a9a4f47)
  • Test WatchdogWorker (73fbe9a)
  • Clean up (aa9a51a)
  • Improve unacknowleged messages handling, refactor (005c6a0)
  • Fix outdated javascript examples (e31f89c)
  • Keep a clean directory structure (642739f)
  • Update README.md (5c011e3)
  • Clean up tests (10ebb77)

7.0.0-rc.6 (2022-05-31)

  • Bump up redis-smq-common to v1.0.0-rc.11 (43717f0)

7.0.0-rc.5 (2022-05-31)

  • Bump up redis-smq-common to v1.0.0-rc.10 (e025525)
  • Update docs (738d9d0)

7.0.0-rc.4 (2022-05-30)

  • Update README.md (fef27c1)
  • Support node-redis v4 (c7a91b1)
  • Drop support for node.js v12 (0b5a4e9)
  • Fix outdated documentation (d3bf31b)
  • Fix broken link (fd48c86)

7.0.0-rc.3 (2022-05-26)

  • Update migration/configuration/message/message-manager references (6d53877)
  • Update docs (df2eddb)
  • Bump up redis-smq-common to v1.0.0-rc.3, refactor (0508c75)
  • Bump up redis-smq-common to v1.0.0-rc.2 (f38d757)
  • Remove singletons, use instance based configuration (65f28ec)
  • Fix 'fsevents not accessible from jest-haste-map' error (1cbc786)
  • Use shared components from redis-smq-common (2abfb98)
  • Reorganize codebase folders (cdf25fa)
  • Clean up redis-keys.ts (c6b8af8)
  • Add PluginRegistrationNotAllowedError error, clean up (aa003a1)
  • Update tests (0950706)
  • Implement a plugging system for using the web-ui as an extension (e2b0cca)
  • Fix tests (ca01d66)
  • Reorganize codebase files (2cef191)
  • Remove the web ui from codebase, clean up (ffe03c9)
  • Update http-api.md (4023dc5)

7.0.0-rc.2 (2022-05-18)

  • Fix typo (8002616)
  • Update docs (d40b1c2)
  • Update misc scripts (bde5171)
  • Clean up WebsocketRateStreamWorker, use incremental timestamp (918fac0)

7.0.0-rc.1 (2022-05-15)

  • Update docs (41ee4bf)
  • Fix consuming-messages/test00015 test (8b3072a)
  • Clean up and simplify the consumer.consume() callback argument (bd98b65)
  • Update docs (9ede0f6)
  • Update tests (b1772aa)
  • Refactor configuration object (2ebe1ba)
  • Make QueueManager constructor private (c55cdad)
  • Update redisKeys version (add3e8d)
  • Update scheduling-messages.md (4b2bb2d)
  • Update multiplexing.md (f36f712)

7.0.0-rc.0 (2022-05-13)

  • Update LICENSE (2ef31db)
  • Update multiplexing.md (62c575e)
  • Add v7 migration guide (48e325e)
  • Add error codes for message publishing/scheduling failures (e89308d)
  • Update examples (564ffe6)
  • Update docs (e8d80c2)
  • Bump up redis-smq-monitor to v7.0.0-rc.0 (059e0fd)
  • Update docs (5810361)
  • Fix http-api/test00001 test (a2f257c)
  • Update docs (117955a)
  • Update tests (ba83f0b)
  • Improve QueueManager methods naming (b1c5237)
  • Clean up (f57f237)
  • Fix pending messages related data in websocket streams (bbd99cb)
  • Clean up (5ae08f8)
  • Update examples (e3990a9)
  • Update tests (86d58e4)
  • Unify pending messages API for both LIFO and Priority messages (ffdbfd1)
  • Fix tests (f00ea26)
  • Fix queue creation, handle properly queue settings (ec00907)
  • Clean up Queue class (afce21f)
  • Update tests (3bc9fd4)
  • Clean up QueueManager (852633d)
  • Validate the message queue before scheduling a message (9c70c0c)
  • Refactor MessageManager API, clean up (0df67f3)
  • Fix various tests errors due to incompatible APIs (bea78a6)
  • Refactor Producer/Consumer/QueueManager APIs (3f0574a)
  • Refactor consumer class, update consumer.consume() signature (618172c)
  • Expect the number messages to be at greater than 6 (02ea402)
  • Improve consuming-messages/test00031 (3605512)
  • Clean up (3660ba3)
  • Bump up redis-smq-monitor to v6.5.7 (05d004a)
  • Fix consuming-messages/test00014 (8a1b7b9)
  • Merge branch 'lock-manager' (c1edcb2)
  • Throw an error when a lock could not be acquired or extended (5ff1fca)
  • Refactor LockManager to allow auto extending locks (efbbe35)

6.4.2 (2022-04-23)

  • Test expired locks (367660e)
  • Do not throw an exception and try to acquire again an expired lock (b7f7d36)
  • Bump up redis-smq-monitor to v6.5.6 (c31cd2e)
  • Fix NPM security vulnerabilities (3900ddf)
  • Clean up monitor-server services (954d856)

6.4.1 (2022-03-22)

  • Fix fsevents not accessible from jest-haste-map (482cb11)
  • Fix broken url in the Web UI docs (02e08d7)

6.4.0 (2022-03-22)

  • Update Web UI docs (ed63186)
  • Bump up redis-smq-monitor to v6.5.5 (3179f85)
  • Test monitor.basePath configuration (00c680d)
  • Support basePath when running web ui from behind a reverse proxy (ea17ffe)

6.3.1 (2022-03-15)

  • Fix typos (a5db76a)

6.3.0 (2022-03-15)

  • Update docs (3ad938a)
  • Use colons instead of dots for joining Redis key segments (75dbcb6)
  • Continue testing consumer message multiplexing (17c9659)
  • Improve multiplexing delay when dequeuing messages (a635c8a)
  • Remove deprecated consumer.cancel(queue,priority,cb), add new tests (4a2d458)
  • Fix test errors, clean up (09feb9c)
  • Prefer method definition over arrow function property (5d7e664)
  • Implement MultiplexedMessageHandlerRunner (6980cbf)
  • Refactor MessageHandler to allow more modular structures (b079244)

6.2.6 (2022-03-04)

  • Clean up (2837cc6)
  • Implement MessageHandlerRunner (cfba094)

6.2.5 (2022-03-03)

  • Update Consumer API docs (8580f4a)
  • Do not consume messages with and without priority from the same queue (84130bf)
  • Use default parameters when creating a Ticker instance (db9feb0)
  • Update consumer queue list upon shutting down a message handler (14519e2)

6.2.4 (2022-02-23)

  • Fix consuming-messages/test00015 error (c5c365a)

6.2.3 (2022-02-23)

  • Bump up redis-smq-monitor to v6.5.3 (4e845d0)
  • Remove gracefully a message handler (a4402b7)
  • Add MessageHandlerAlreadyExistsError custom error (65882ed)

6.2.2 (2022-02-21)

  • Fix a queue rate limiting bug allowing to save invalid Redis keys (1dc91aa)
  • Bump up redis-smq-monitor to v6.5.2 (e192db0)
  • Update docs (5a6469e)

6.2.1 (2022-02-19)

  • Remove unused code (475fa3d)

6.2.0 (2022-02-19)

  • Bump up redis-smq-monitor to v6.5.1 (c543c55)
  • Improve consumer message rate time series handling (7d51bb3)
  • Update docs (ef21b39)
  • Allow configuring queue rate limiting from the HTTP API (ec2bc52)
  • Test message consumption rate limiting (62e5b1f)
  • Implement message consumption rate limiting (1c87ec0)

6.1.0 (2022-02-14)

  • Allow configuring which messages to store with extended parameters (7bd37a1)

6.0.4 (2022-02-13)

  • Fix missing type definition for koa-bodyparser (4b8a11e)

6.0.3 (2022-02-13)

  • Increase code coverage (ec839a1)

6.0.2 (2022-02-12)

  • Update architecture overview diagram (e8f77a8)
  • Improve offline consumers handling & message recovery strategy (4072939)
  • Fix typos and update README.md (b73bd37)

6.0.1 (2022-02-11)

  • Update docs (78fef2e)
  • Clean up WorkerPool class (b4dae38)

6.0.0 (2022-02-08)

  • Bump up redis-smq-monitor version to 6.4.0 (71ceb45)
  • Implement TimeSeriesWorker (a5c404e)
  • When deleting a namespace throw an error if it does not exist (28d0be0)
  • Fix schedule-message.lua parameters (15708c4)
  • Allow managing namespaces, update HTTP API, test (b0c265c)
  • Rename setScheduledPeriod() to setScheduledRepeatPeriod() (d6e3376)
  • Improve Redis keys handling (d9c50f3)
  • Improve LUA scripts parameters handling (5aaa893)
  • Remove redundant call to this.getMainKeys() (f3b1f1f)
  • Update docs (31c81ca)

6.0.0-rc.11 (2022-02-02)

  • Fix tests/purging-queues/test00007 (88e1d3a)
  • Update pre-push hook (8594e6a)
  • Clean up (63ca899)
  • Fix broken pre-release v6.0.0-rc.10 due to missing dependency (9739115)

6.0.0-rc.10 (2022-02-01)

  • Improve locking mechanisms, remove redlock package, refactor (8f5d9b2)
  • Continue Message class refactoring, update docs and examples (d25f370)
  • Fix consuming-messages/test00006 test errors, refactor Message class (efa1163)
  • Fix at-most-once message delivery (eb4e6fa)
  • Update tests (6f9d07e)
  • Bump up redis-smq-monitor to v6.3.0 (ec518fc)
  • Update time series data only when message rate > 0 (748bc7f)
  • Remove dependency on async package and clean up (76698b2)
  • Use worker pool for system workers and monitor-server workers (8bee7ec)
  • Test producing duplicate messages (a260fd7)
  • Remove redundant code related to message.isSchedulable() (34f25cc)
  • Update Redis keys prefix (0914c99)
  • Forbid producing a message more than once, introduce MessageMetadata (eebab36)

6.0.0-rc.9 (2022-01-27)

  • Check object reference equality before clearing singleton instance (88e35ad)
  • Improve namespaced logger (9acf9e9)
  • Support external loggers, use system-wide config, refactor codebase (eaf9c14)
  • Make storing acknowledged & dead-lettered messages optional (96b8be3)
  • Fix typos and update readme (21b2e9a)

6.0.0-rc.8 (2022-01-24)

  • Update migration guide (545932a)
  • Test multi-queue consumer, update docs (70209a0)
  • Fix ticker waitlock issue (fca5bd1)
  • Handle gracefully run/shutdown call errors, fix test errors, clean up (779c562)
  • Clean up (4dc6ce5)
  • Update examples (38064d0)
  • Implement multi-queue consumers, refactor and clean up (9c2fefb)
  • Fix typo in README.md (e0ca944)

6.0.0-rc.7 (2022-01-21)

  • Update package.json keywords (e84d4cf)
  • Remove extra spacing in message-manager.md (b87ac3d)
  • Update QueueManager API reference (832b090)
  • Move purge operations to handlers (5345dc3)
  • Rename and move purgePendingMessagesWithPriority to MessageManager (e959d7b)
  • Rename and move purgePendingMessages to MessageManager (3804122)
  • Rename and move purgeScheduledMessages to MessageManager (78ba9ac)
  • Rename and move purgeAcknowledgedMessages to MessageManager (febcd9c)
  • Rename and move purgeDeadLetteredMessages to MessageManager (cf07797)
  • Update message-manager.md (8b5fec1)
  • Rename requeueMessageFromDLQueue to requeueDeadLetteredMessage (2d4df08)
  • Rename requeueMessageFromAcknowledgedQueue to requeueAcknowledgedMessage (59f446e)
  • Rename deleteDeadLetterMessage to deleteDeadLetteredMessage (f99dd09)
  • Rename getDeadLetterMessages to getDeadLetteredMessages (3172c20)
  • Update migration guide (837da04)

6.0.0-rc.6 (2022-01-20)

  • Bump up redis-smq-monitor to v6.1.0 (83107be)
  • Update README.md (0ce39bd)
  • Make Producer stateless, drop MultiQueueProducer, refactor, clean up (7597762)

6.0.0-rc.5 (2022-01-18)

  • Fix a possible EventEmitter memory leak in WorkerRunner (4d3a066)
  • Fix MultiQueueProducer bug with queueName not being validated, test (c4cbc7d)

6.0.0-rc.4 (2022-01-18)

  • Bump redis-smq-monitor to v6.1.0 (930aa95)
  • Improve error message (443794b)
  • Make MultiQueueProducer publish a message as a single atomic operation (19cfb2f)
  • Always invoke setUpMessageQueue() when publishing a message (502a4cb)
  • Test scheduled messages publication when dst queue is deleted (41055f9)
  • Make sure scheduled messages aren't published if dst queue is deleted (cda411a)
  • Fix a typo (af5c310)
  • Fix delete queue validation bug causing request to hang forever (c14488a)
  • Update typescript/javascript examples (f595bb1)
  • Update queue-manager.md (461ae0b)
  • Update HTTP API endpoints documentation (5da7777)
  • Improve HTTP API error handling (c90473a)
  • Allow to delete a message queue from HTTP API, test, update docs (a3087a2)
  • Fix husky v7 setup (3fa4f2f)
  • Update HTTP API reference (688a028)
  • Fix npm vulnerability warnings (7ad221b)
  • Refactor monitor server HTTP API routing (2fec7c3)

6.0.0-rc.3 (2022-01-14)

  • Allow to delete a message queue alongside with its related data.
  • Make sure to release queue lock before returning.
  • Improve QueueManager API method names, update docs.
  • Update QueueManager API reference (add deleteQueue() method).
  • Fix QueueManager broken method references in the Web UI.
  • Rename purgeScheduledMessages() to purgeScheduledQueue().
  • Test deleting queues, wait for a heartbeat before returning during startup.
  • Update QueueManager API reference.
  • Fix random errors from tests/consuming-messages/test00003.
  • Fix random test errors due to javascript time drift.
  • Do not return an error if a heartbeat is not found. Just skip it.

6.0.0-rc.2 (2022-01-11)

  • Optimize npm package size, update docs.
  • Rename event MESSAGE_DEQUEUED to MESSAGE_RECEIVED.
  • Update ConsumerMessageRateWriter constructor signature
  • Increase code coverage.
  • Small cleanup and improvements.

6.0.0-rc.1 (2022-01-04)

  • Expire consumers and producers time series after 30s of inactivity.
  • Improve redisKeys versioning strategy, update docs.
  • Improve migration guide.

6.0.0-rc.0 (2022-01-03)

  • Implement MultiQueueProducer for publishing messages to multiple queues using a single producer instance.
  • Implement rates time series for queues, producers and consumers, allowing to move the chart to the left or the right in order to scan the timeline.
  • Refactor MessageManager and QueueManager API
  • Add new WebSocket streams for heartbeats, rates, queues, consumers, and producers.
  • Refactored Web UI.
  • Overall improvements and minor bug fixes.

5.0.11 (2021-12-07)

  • Bumped redis-smq-monitor to v5.0.7.
  • Updated package.json to use strict package versioning.

5.0.10 (2021-12-04)

  • Bumped redis-smq-monitor to v5.0.6.
  • Updated scheduler.md.

5.0.9 (2021-12-03)

  • Calculate and emit "idle" event only when testing.

5.0.8 (2021-12-01)

  • Updated architecture diagram.
  • Bumped redis-smq-monitor to v5.0.4

5.0.7 (2021-11-27)

  • Do not throw an error immediately and allow a compatible Redis client (ioredis, node_redis) to reconnect in case of Redis server not responding or restarting.

5.0.6 (2021-11-26)

  • Reviewed and updated documentation files.

5.0.5 (2021-11-25)

  • Minor improvements: refactored and cleaned up MessageRate and QueueManager classes.

5.0.4 (2021-11-24)

  • Updated RedisSMQ logo.
  • Bumped redis-smq-monitor to v5.0.3.

5.0.3 (2021-11-23)

  • Updated RedisSMQ logo.

5.0.2 (2021-11-23)

  • Added RedisSMQ logo.
  • Bumped redis-smq-monitor to v5.0.2.
  • Bumped type-coverage to v2.19.0.

5.0.1 (2021-11-22)

  • Fixed broken redis-smq-monitor package.

5.0.0 (2021-11-22)

  • Implemented message and queue management features in the Web UI.
  • Refactored the MQ to use LIFO queues.
  • Updated HTTP API endpoints.
  • Minor overall improvements and changes.

4.0.9 (2021-11-10)

  • Fixed outdated Message API docs.

4.0.8 (2021-11-09)

  • Improved debugging info.
  • Allowed listing message queues from QueueManagerFrontend.

4.0.7 (2021-11-08)

  • Made queue namespace optional for queue/message management. When not provided, the configuration namespace is used. If the configuration namespace is not set, the default namespace is used.

4.0.6 (2021-11-07)

  • Fixed queues and messages management issues when using many namespaces.

4.0.5 (2021-11-05)

  • Fixed outdated examples in the HTTP API reference

4.0.3 (2021-11-04)

  • Minor refactoring and improvements.

4.0.2 (2021-11-03)

  • Updated docs.
  • Added current MQ architecture overview.

4.0.1 (2021-11-02)

  • Removed Scheduler class in favor of MessageManager.
  • Added QueueManager and MessageManager, allowing to fetch/delete/requeue messages from different queues.
  • Improved MQ performance by using background message processing with the help of workers.
  • MQ architecture tweaks and improvements.
  • Redis keys namespace bug fix.

3.3.0 (2021-10-07)

  • With the release of v3.3.0, reliable, persistent priority queues are now supported.
  • Added new tests and increased code coverage.

3.2.0 (2021-10-01)

  • Run tests in Node.js v12, v14, and v16
  • Run tests in Redis v2.6.17, v3, v4, v5, and v6
  • Made redis-smq-monitor server an integral part of redis-smq
  • Implemented Scheduler HTTP API endpoints
  • Various fixes and improvements

3.1.1 (2021-09-16)

  • Added Github CI

3.1.0 (2021-09-15)

  • Added Scheduler API docs.
  • Added new methods to fetch and delete scheduled messages.

3.0.4 (2021-09-08)

  • Updated examples.

3.0.3 (2021-09-08)

  • Fixed .npmignore.

3.0.2 (2021-09-08)

  • Moved all dependant declaration packages from "devDependencies" to "dependencies".

3.0.1 (2021-09-08)

  • Moved husky to devDependencies.

3.0.0 (2021-09-08)

  • A major release v3 is out.
  • Starting from this release, only active LTS and maintenance LTS Node.js releases are supported.
  • Upgrading your installation to the newest version should be straightforward as most APIs are compatible with some exceptions.
  • Project codebase has been migrated to TypeScript to make use of strong typings.
  • JavaScript's users are always first class citizens.
  • Fixed a compatibility issue between ioredis and redis when calling multi.exec().
  • Fixed typing inconsistencies (ConfigRedisDriver and RedisDriver types) between redis-smq and redis-smq-monitor.
  • Improved scheduler mechanics, refactored GC, and updated tests.
  • Introduced RedisClient.
  • Updated docs.

2.0.12 (2021-02-07)

  • Fixed a bug in redis-client.js.

2.0.11 (2020-10-20)

  • Improved overall performance by using asynchronous loops and avoiding recursion.
  • Continued clean up and refactoring.
  • Added tests coverage.

2.0.10 (2020-10-16)

  • Implemented stats providers.
  • Fixed a potential memory leak issue relative to event listeners.
  • Created a new module for encapsulating message collecting logic.
  • Improved code structure

2.0.9 (2020-10-11)

  • Updated tests.

2.0.8 (2020-10-11)

  • Refactored legacy code, upgraded eslint and added prettier.

2.0.7 (2020-10-04)

  • Fixed bug in stats aggregation causing lost of queue name and queue namespace.

2.0.6 (2020-10-02)

  • Refactored gc.collectProcessingQueuesMessages()
  • Capitalized factory names

2.0.5 (2020-09-23)

  • Bumped redis-smq-monitor to 1.1.5

2.0.4 (2020-09-23)

  • Bumped redis-smq-monitor to 1.1.4

2.0.3 (2020-09-21)

  • Bumped redis-smq-monitor to 1.1.3

2.0.2 (2020-09-20)

  • Bumped redis-smq-monitor to 1.1.2

2.0.1 (2020-09-20)

  • Included CPU usage percentage, hostname, and IP address in the consumer stats
  • Bumped redis-smq-monitor to 1.1.1
  • Updated the monitor parameters types based on the redis-smq-monitor package typing

2.0.0 (2020-04-12)

  • Removed all deprecated methods
  • Removed undocumented Message constructor parameters
  • Message.createFromMessage() now accepts 2 parameters for cloning a message (see Message API docs)
  • Introduced TypeScript support
  • Added examples for TypeScript
  • Small refactoring and cleaning

1.1.6 (2019-11-29)

  • Bug fix: Fixed broken message retry delay (see issue #24)

1.1.5 (2019-11-26)

  • Migrated from Mocha/sinon/chai to Jest
  • Minor scheduler bug fix in some cases when using both PROPERTY_SCHEDULED_REPEAT and PROPERTY_SCHEDULED_CRON
  • Code cleanup

1.1.4 (2019-11-23)

  • Hotfix release addresses a bug with invalid state checking at the dispatcher level

1.1.3 (2019-11-23)

  • Clean up
  • Improved error handling
  • Improved dispatcher state management
  • Fixed broken redis parameters parsing for old configuration syntax used before v1.1.0

1.1.1 (2019-11-12)

  • Handle gracefully unexpected errors for both consumers/producers. Instead of terminating the whole node process, in case of an unexpected error, just log the error and shutdown the instance.
  • Fixed wrong emitted event during producer instance bootstrap causing TypeError.

1.1.0 (2019-11-11)

  • Major code refactoring and improvements
  • Fixed namespace related bugs
  • Fixed minor consumer related bugs
  • Added support for ioredis
  • Rewritten RedisSMQ Monitor based on React and D3
  • RedisSMQ Monitor has split up from main repository and now maintained separately.
  • Introduced changelog