UNPKG

redis-smq

Version:

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

780 lines (572 loc) 26.8 kB
# CHANGELOG ## 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 KEY_QUEUE_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