redis-smq 7.0.0-rc.3 → 7.0.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +36 -35
- package/dist/src/lib/base.js +1 -1
- package/dist/src/lib/broker/dead-letter-message.d.ts +2 -2
- package/dist/src/lib/broker/delay-message.d.ts +3 -3
- package/dist/src/lib/broker/requeue-message.d.ts +2 -2
- package/dist/src/lib/broker/retry-message.d.ts +2 -2
- package/dist/src/lib/broker/schedule-message.d.ts +2 -2
- package/dist/src/lib/consumer/consumer-heartbeat.js +2 -2
- package/dist/src/lib/consumer/consumer-message-handler/dequeue-message.d.ts +2 -2
- package/dist/src/lib/consumer/consumer-message-handler/message-handler-runner.js +1 -1
- package/dist/src/lib/consumer/consumer-message-handler/message-handler.d.ts +2 -2
- package/dist/src/lib/consumer/consumer-message-handler/message-handler.js +1 -1
- package/dist/src/lib/consumer/consumer-message-handler/multiplexed-message-handler/multiplexed-message-handler-runner.js +1 -1
- package/dist/src/lib/consumer/consumer-message-handler/processing-queue.d.ts +3 -3
- package/dist/src/lib/consumer/consumer-queues.d.ts +2 -2
- package/dist/src/lib/consumer/consumer.js +1 -1
- package/dist/src/lib/consumer/offline-consumers.d.ts +2 -2
- package/dist/src/lib/message-manager/message-manager.js +1 -1
- package/dist/src/lib/message-manager/message-storage/sorted-set.js +2 -2
- package/dist/src/lib/queue-manager/delete-queue-transaction.d.ts +2 -2
- package/dist/src/lib/queue-manager/delete-queue-transaction.js +2 -2
- package/dist/src/lib/queue-manager/namespace.js +1 -1
- package/dist/src/lib/queue-manager/queue-manager.js +1 -1
- package/dist/src/lib/queue-manager/queue-rate-limit.d.ts +2 -2
- package/dist/src/lib/queue-manager/queue-rate-limit.js +1 -1
- package/dist/src/lib/queue-manager/queue.js +1 -1
- package/dist/src/workers/delay.worker.js +1 -1
- package/dist/src/workers/requeue.worker.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 7.0.0-rc.6 (2022-05-31)
|
|
4
|
+
|
|
5
|
+
* Bump up redis-smq-common to v1.0.0-rc.11 (43717f0)
|
|
6
|
+
|
|
7
|
+
## 7.0.0-rc.5 (2022-05-31)
|
|
8
|
+
|
|
9
|
+
* Bump up redis-smq-common to v1.0.0-rc.10 (e025525)
|
|
10
|
+
* Update docs (738d9d0)
|
|
11
|
+
|
|
12
|
+
## 7.0.0-rc.4 (2022-05-30)
|
|
13
|
+
|
|
14
|
+
* Update README.md (fef27c1)
|
|
15
|
+
* Support node-redis v4 (c7a91b1)
|
|
16
|
+
* Drop support for node.js v12 (0b5a4e9)
|
|
17
|
+
* Fix outdated documentation (d3bf31b)
|
|
18
|
+
* Fix broken link (fd48c86)
|
|
19
|
+
|
|
3
20
|
## 7.0.0-rc.3 (2022-05-26)
|
|
4
21
|
|
|
5
22
|
* Update migration/configuration/message/message-manager references (6d53877)
|
package/README.md
CHANGED
|
@@ -15,23 +15,23 @@
|
|
|
15
15
|
|
|
16
16
|
RedisSMQ is a Node.js library for queuing messages (aka jobs) and processing them asynchronously with consumers. Backed by Redis, it allows scaling up your application with ease of use.
|
|
17
17
|
|
|
18
|
-
> ☝ The master branch reflects the latest changes and updates. It is currently going under heavy development. To view the documentation
|
|
18
|
+
> ☝ The master branch reflects the latest changes and updates. It is currently going under heavy development. To view the release documentation see [v6.4.2 docs](https://github.com/weyoss/redis-smq/tree/v6.4.2).
|
|
19
19
|
|
|
20
20
|
## Features
|
|
21
21
|
|
|
22
|
-
* **[High-performance message processing](docs/performance.md)**
|
|
22
|
+
* **[High-performance message processing](/docs/performance.md)**
|
|
23
23
|
* **[Multi-Queue Producers](#producer-class) & [Multi-Queue Consumers](#consumer-class)**: Offering very flexible models which make RedisSMQ an ideal message broker for your microservices.
|
|
24
24
|
* **[Supporting both at-least-once/at-most-once delivery](/docs/api/message.md#messageprototypesetretrythreshold)**: In case of failures, while delivering or processing a message, RedisSMQ can guaranty that the message will be not lost and redelivered again. When configured to do so, RedisSMQ can also ensure that the message is delivered at-most-once.
|
|
25
|
-
* **[Message Expiration](docs/api/message.md#messageprototypesetttl)**: A message will not be delivered if it has been in a queue for longer than a given amount of time, called TTL (time-to-live).
|
|
26
|
-
* **[Message Consumption Timeout](docs/api/message.md#messageprototypesetconsumetimeout)**: Timeout for consuming messages.
|
|
27
|
-
* **[Queue Rate Limiting](docs/queue-rate-limiting.md)**: Allowing you to control the rate at which the messages are consumed from a given queue.
|
|
28
|
-
* **[Scheduling Messages](docs/scheduling-messages.md)**: Messages can be configured to be delayed, delivered for N times with an optional period between deliveries, and to be scheduled using CRON expressions.
|
|
29
|
-
* **[Reliable Priority Queues](docs/priority-queues.md)**: Supports priority messaging.
|
|
30
|
-
* **[Multiplexing](docs/multiplexing.md)**: A feature which allows message handlers to use a single redis connection to dequeue and consume messages.
|
|
25
|
+
* **[Message Expiration](/docs/api/message.md#messageprototypesetttl)**: A message will not be delivered if it has been in a queue for longer than a given amount of time, called TTL (time-to-live).
|
|
26
|
+
* **[Message Consumption Timeout](/docs/api/message.md#messageprototypesetconsumetimeout)**: Timeout for consuming messages.
|
|
27
|
+
* **[Queue Rate Limiting](/docs/queue-rate-limiting.md)**: Allowing you to control the rate at which the messages are consumed from a given queue.
|
|
28
|
+
* **[Scheduling Messages](/docs/scheduling-messages.md)**: Messages can be configured to be delayed, delivered for N times with an optional period between deliveries, and to be scheduled using CRON expressions.
|
|
29
|
+
* **[Reliable Priority Queues](/docs/priority-queues.md)**: Supports priority messaging.
|
|
30
|
+
* **[Multiplexing](/docs/multiplexing.md)**: A feature which allows message handlers to use a single redis connection to dequeue and consume messages.
|
|
31
31
|
* **[HTTP API](https://github.com/weyoss/redis-smq-monitor)**: an HTTP interface is provided to interact with the MQ.
|
|
32
32
|
* **[Web UI](https://github.com/weyoss/redis-smq-monitor-client)**: RedisSMQ can be managed also from your web browser.
|
|
33
|
-
* **[Logging](docs/logs.md)**: Comes with a built-in JSON logger. But you can also use your own logger instance.
|
|
34
|
-
* **[Configurable](docs/configuration.md)**: Many options and features can be configured.
|
|
33
|
+
* **[Logging](https://github.com/weyoss/redis-smq-common/blob/master/docs/logs.md)**: Comes with a built-in JSON logger. But you can also use your own logger instance.
|
|
34
|
+
* **[Configurable](/docs/configuration.md)**: Many options and features can be configured.
|
|
35
35
|
* **Both redis & ioredis clients are supported**: RedisSMQ can be configured to use either `redis` or `ioredis` to connect to Redis server.
|
|
36
36
|
* **Rigorously tested**: With 100+ tests and code coverage no less than 80%.
|
|
37
37
|
* **Highly optimized**: Strongly-typed and implemented using pure callbacks, with small memory footprint and no memory leaks. See [callbacks vs promises vs async/await benchmarks](http://bluebirdjs.com/docs/benchmarks.html).
|
|
@@ -41,7 +41,7 @@ RedisSMQ is a Node.js library for queuing messages (aka jobs) and processing the
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-

|
|
44
|
+

|
|
45
45
|
|
|
46
46
|
## Table of Content
|
|
47
47
|
|
|
@@ -54,16 +54,16 @@ RedisSMQ is a Node.js library for queuing messages (aka jobs) and processing the
|
|
|
54
54
|
2. [Producer Class](#producer-class)
|
|
55
55
|
3. [Consumer Class](#consumer-class)
|
|
56
56
|
2. Advanced Topics
|
|
57
|
-
1. [Scheduling Messages](docs/scheduling-messages.md)
|
|
58
|
-
2. [Priority Queues](docs/priority-queues.md)
|
|
59
|
-
3. [Queue Rate Limiting](docs/queue-rate-limiting.md)
|
|
60
|
-
4. [Multiplexing](docs/multiplexing.md)
|
|
61
|
-
5. [Message Manager](docs/api/message-manager.md)
|
|
62
|
-
6. [Queue Manager](docs/api/queue-manager.md)
|
|
57
|
+
1. [Scheduling Messages](/docs/scheduling-messages.md)
|
|
58
|
+
2. [Priority Queues](/docs/priority-queues.md)
|
|
59
|
+
3. [Queue Rate Limiting](/docs/queue-rate-limiting.md)
|
|
60
|
+
4. [Multiplexing](/docs/multiplexing.md)
|
|
61
|
+
5. [Message Manager](/docs/api/message-manager.md)
|
|
62
|
+
6. [Queue Manager](/docs/api/queue-manager.md)
|
|
63
63
|
7. [HTTP API](https://github.com/weyoss/redis-smq-monitor)
|
|
64
64
|
8. [Web UI](https://github.com/weyoss/redis-smq-monitor-client)
|
|
65
|
-
9. [Logs](docs/logs.md)
|
|
66
|
-
5. [RedisSMQ Architecture](docs/redis-smq-architecture.md)
|
|
65
|
+
9. [Logs](https://github.com/weyoss/redis-smq-common/blob/master/docs/logs.md)
|
|
66
|
+
5. [RedisSMQ Architecture](/docs/redis-smq-architecture.md)
|
|
67
67
|
6. [Performance](#performance)
|
|
68
68
|
7. [Contributing](#contributing)
|
|
69
69
|
8. [License](#license)
|
|
@@ -83,12 +83,12 @@ npm install redis-smq --save
|
|
|
83
83
|
|
|
84
84
|
Considerations:
|
|
85
85
|
|
|
86
|
-
-
|
|
87
|
-
- Minimal Redis server version is 2.6.12
|
|
86
|
+
- Minimal Node.js version is >= 14 (RedisSMQ is tested under current active LTS and maintenance LTS Node.js releases).
|
|
87
|
+
- Minimal Redis server version is 2.6.12 (RedisSMQ is tested under Redis v2.6, v3, v4, v5, and v6).
|
|
88
88
|
|
|
89
89
|
## Configuration
|
|
90
90
|
|
|
91
|
-
See [Configuration](docs/configuration.md) for more details.
|
|
91
|
+
See [Configuration](/docs/configuration.md) for more details.
|
|
92
92
|
|
|
93
93
|
## Usage
|
|
94
94
|
|
|
@@ -98,8 +98,9 @@ You can create a queue, view existing queues, or delete a queue using the [Queue
|
|
|
98
98
|
|
|
99
99
|
```javascript
|
|
100
100
|
const { QueueManager } = require('redis-smq');
|
|
101
|
+
const config = require('./config')
|
|
101
102
|
|
|
102
|
-
QueueManager.createInstance((err, queueManager) => {
|
|
103
|
+
QueueManager.createInstance(config, (err, queueManager) => {
|
|
103
104
|
if (err) console.log(err);
|
|
104
105
|
else queueManager.queue.create('test_queue', false, (err) => console.log(err));
|
|
105
106
|
})
|
|
@@ -128,7 +129,7 @@ message
|
|
|
128
129
|
|
|
129
130
|
The `Message` class provides many methods for setting up different message parameters such as message body, message priority, message TTL, etc.
|
|
130
131
|
|
|
131
|
-
See [Message Reference](docs/api/message.md) for more details.
|
|
132
|
+
See [Message Reference](/docs/api/message.md) for more details.
|
|
132
133
|
|
|
133
134
|
#### Producer Class
|
|
134
135
|
|
|
@@ -161,7 +162,7 @@ producer.produce(message, (err) => {
|
|
|
161
162
|
});
|
|
162
163
|
```
|
|
163
164
|
|
|
164
|
-
See [Producer Reference](docs/api/producer.md) for more details.
|
|
165
|
+
See [Producer Reference](/docs/api/producer.md) for more details.
|
|
165
166
|
|
|
166
167
|
#### Consumer Class
|
|
167
168
|
|
|
@@ -213,35 +214,35 @@ A `dead-letter queue` is a system generated queue that holds all messages that c
|
|
|
213
214
|
|
|
214
215
|
By default, RedisSMQ does not store acknowledged and dead-lettered messages for saving disk and memory space, and also to increase message processing performance. If you need such feature, you can enable it from your [configuration](/docs/configuration.md) object.
|
|
215
216
|
|
|
216
|
-
See [Consumer Reference](docs/api/consumer.md) for more details.
|
|
217
|
+
See [Consumer Reference](/docs/api/consumer.md) for more details.
|
|
217
218
|
|
|
218
219
|
### Advanced Topics
|
|
219
220
|
|
|
220
|
-
* [Scheduling Messages](docs/scheduling-messages.md)
|
|
221
|
+
* [Scheduling Messages](/docs/scheduling-messages.md)
|
|
221
222
|
|
|
222
|
-
* [Priority Queues](docs/priority-queues.md)
|
|
223
|
+
* [Priority Queues](/docs/priority-queues.md)
|
|
223
224
|
|
|
224
|
-
* [Queue Rate Limiting](docs/queue-rate-limiting.md)
|
|
225
|
+
* [Queue Rate Limiting](/docs/queue-rate-limiting.md)
|
|
225
226
|
|
|
226
|
-
* [Multiplexing](docs/multiplexing.md)
|
|
227
|
+
* [Multiplexing](/docs/multiplexing.md)
|
|
227
228
|
|
|
228
|
-
* [Message Manager](docs/api/message-manager.md)
|
|
229
|
+
* [Message Manager](/docs/api/message-manager.md)
|
|
229
230
|
|
|
230
|
-
* [Queue Manager](docs/api/queue-manager.md)
|
|
231
|
+
* [Queue Manager](/docs/api/queue-manager.md)
|
|
231
232
|
|
|
232
233
|
* [HTTP API](https://github.com/weyoss/redis-smq-monitor)
|
|
233
234
|
|
|
234
235
|
* [Web UI](https://github.com/weyoss/redis-smq-monitor-client)
|
|
235
236
|
|
|
236
|
-
* [Logs](docs/logs.md)
|
|
237
|
+
* [Logs](https://github.com/weyoss/redis-smq-common/blob/master/docs/logs.md)
|
|
237
238
|
|
|
238
239
|
## RedisSMQ Architecture
|
|
239
240
|
|
|
240
|
-
* See [Architecture Overview](docs/redis-smq-architecture.md).
|
|
241
|
+
* See [Architecture Overview](/docs/redis-smq-architecture.md).
|
|
241
242
|
|
|
242
243
|
## Performance
|
|
243
244
|
|
|
244
|
-
See [Performance](docs/performance.md) for more details.
|
|
245
|
+
See [Performance](/docs/performance.md) for more details.
|
|
245
246
|
|
|
246
247
|
## Contributing
|
|
247
248
|
|
package/dist/src/lib/base.js
CHANGED
|
@@ -12,7 +12,7 @@ class Base extends events_1.EventEmitter {
|
|
|
12
12
|
super();
|
|
13
13
|
this.sharedRedisClient = null;
|
|
14
14
|
this.setUpSharedRedisClient = (cb) => {
|
|
15
|
-
redis_smq_common_1.
|
|
15
|
+
(0, redis_smq_common_1.createClientInstance)(this.config.redis, (err, client) => {
|
|
16
16
|
if (err)
|
|
17
17
|
cb(err);
|
|
18
18
|
else if (!client)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EMessageDeadLetterCause, EMessageUnacknowledgedCause, IRequiredConfig } from '../../../types';
|
|
2
2
|
import { Message } from '../message/message';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
import { RedisClient } from 'redis-smq-common';
|
|
5
|
-
export declare function deadLetterMessage(config: IRequiredConfig, mixed:
|
|
5
|
+
export declare function deadLetterMessage(config: IRequiredConfig, mixed: IRedisClientMulti, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause, deadLetterCause: EMessageDeadLetterCause): void;
|
|
6
6
|
export declare function deadLetterMessage(config: IRequiredConfig, mixed: RedisClient, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause, deadLetterCause: EMessageDeadLetterCause, cb: ICallback<void>): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EMessageUnacknowledgedCause } from '../../../types';
|
|
2
2
|
import { Message } from '../message/message';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
import { RedisClient } from 'redis-smq-common';
|
|
5
|
-
export declare function delayMessageTransaction(mixed:
|
|
6
|
-
export declare function delayMessage(mixed:
|
|
5
|
+
export declare function delayMessageTransaction(mixed: IRedisClientMulti, message: Message, keyQueueProcessing: string): void;
|
|
6
|
+
export declare function delayMessage(mixed: IRedisClientMulti, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause): void;
|
|
7
7
|
export declare function delayMessage(mixed: RedisClient, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause, cb: ICallback<void>): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EMessageUnacknowledgedCause } from '../../../types';
|
|
2
2
|
import { Message } from '../message/message';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
import { RedisClient } from 'redis-smq-common';
|
|
5
|
-
export declare function requeueMessage(mixed:
|
|
5
|
+
export declare function requeueMessage(mixed: IRedisClientMulti, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause): void;
|
|
6
6
|
export declare function requeueMessage(mixed: RedisClient, message: Message, keyQueueProcessing: string, unacknowledgedCause: EMessageUnacknowledgedCause, cb: ICallback<void>): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EMessageDeadLetterCause, EMessageUnacknowledgedCause, IRequiredConfig } from '../../../types';
|
|
2
2
|
import { Message } from '../message/message';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
import { RedisClient } from 'redis-smq-common';
|
|
5
|
-
export declare function retryMessage(config: IRequiredConfig, mixed:
|
|
5
|
+
export declare function retryMessage(config: IRequiredConfig, mixed: IRedisClientMulti, processingQueue: string, message: Message, unacknowledgedCause: EMessageUnacknowledgedCause): EMessageDeadLetterCause | void;
|
|
6
6
|
export declare function retryMessage(config: IRequiredConfig, mixed: RedisClient, processingQueue: string, message: Message, unacknowledgedCause: EMessageUnacknowledgedCause, cb: ICallback<EMessageDeadLetterCause | void>): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Message } from '../message/message';
|
|
2
|
-
import { ICallback,
|
|
2
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
3
3
|
import { RedisClient } from 'redis-smq-common';
|
|
4
|
-
export declare function scheduleMessage(mixed:
|
|
4
|
+
export declare function scheduleMessage(mixed: IRedisClientMulti, message: Message): boolean;
|
|
5
5
|
export declare function scheduleMessage(mixed: RedisClient, message: Message, cb: ICallback<void>): void;
|
|
@@ -62,7 +62,7 @@ class ConsumerHeartbeat extends events_2.EventEmitter {
|
|
|
62
62
|
const multi = this.redisClient.multi();
|
|
63
63
|
multi.hset(this.keyHeartbeats, this.consumer.getId(), heartbeatPayloadStr);
|
|
64
64
|
multi.zadd(this.keyHeartbeatTimestamps, timestamp, this.consumer.getId());
|
|
65
|
-
|
|
65
|
+
multi.exec((err) => {
|
|
66
66
|
if (err)
|
|
67
67
|
this.emit(events_1.events.ERROR, err);
|
|
68
68
|
else {
|
|
@@ -171,7 +171,7 @@ class ConsumerHeartbeat extends events_2.EventEmitter {
|
|
|
171
171
|
multi.hdel(keyHeartbeats, consumerId);
|
|
172
172
|
multi.zrem(keyHeartbeatConsumerWeight, consumerId);
|
|
173
173
|
(0, offline_consumers_1.handleOfflineConsumer)(config, multi, redisClient, consumerId, done);
|
|
174
|
-
}, () =>
|
|
174
|
+
}, () => multi.exec((err) => cb(err)));
|
|
175
175
|
}
|
|
176
176
|
else
|
|
177
177
|
cb();
|
|
@@ -14,8 +14,8 @@ export declare class DequeueMessage {
|
|
|
14
14
|
protected priorityQueuing: boolean;
|
|
15
15
|
constructor(messageHandler: MessageHandler, redisClient: RedisClient);
|
|
16
16
|
protected dequeueMessageWithPriority(cb: ICallback<string>): void;
|
|
17
|
-
protected waitForMessage(cb: ICallback<string>): void;
|
|
18
|
-
protected dequeueMessage(cb: ICallback<string>): void;
|
|
17
|
+
protected waitForMessage(cb: ICallback<string | null>): void;
|
|
18
|
+
protected dequeueMessage(cb: ICallback<string | null>): void;
|
|
19
19
|
dequeue(): void;
|
|
20
20
|
run(cb: ICallback<void>): void;
|
|
21
21
|
quit(cb: ICallback<void>): void;
|
|
@@ -41,7 +41,7 @@ class MessageHandlerRunner {
|
|
|
41
41
|
}
|
|
42
42
|
runMessageHandler(handlerParams, cb) {
|
|
43
43
|
const { redis } = this.config;
|
|
44
|
-
redis_smq_common_1.
|
|
44
|
+
(0, redis_smq_common_1.createClientInstance)(redis, (err, client) => {
|
|
45
45
|
if (err)
|
|
46
46
|
cb(err);
|
|
47
47
|
else if (!client)
|
|
@@ -5,7 +5,7 @@ import { DequeueMessage } from './dequeue-message';
|
|
|
5
5
|
import { ConsumeMessage } from './consume-message';
|
|
6
6
|
import { Consumer } from '../consumer';
|
|
7
7
|
import { PowerManager, RedisClient } from 'redis-smq-common';
|
|
8
|
-
import { ICallback, ICompatibleLogger,
|
|
8
|
+
import { ICallback, ICompatibleLogger, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
9
9
|
export declare class MessageHandler extends EventEmitter {
|
|
10
10
|
protected id: string;
|
|
11
11
|
protected consumer: Consumer;
|
|
@@ -32,5 +32,5 @@ export declare class MessageHandler extends EventEmitter {
|
|
|
32
32
|
getConfig(): IRequiredConfig;
|
|
33
33
|
isRunning(): boolean;
|
|
34
34
|
getHandler(): TConsumerMessageHandler;
|
|
35
|
-
static cleanUp(config: IRequiredConfig, redisClient: RedisClient, consumerId: string, queue: TQueueParams, pendingMulti:
|
|
35
|
+
static cleanUp(config: IRequiredConfig, redisClient: RedisClient, consumerId: string, queue: TQueueParams, pendingMulti: IRedisClientMulti | undefined, cb: ICallback<void>): void;
|
|
36
36
|
}
|
|
@@ -82,7 +82,7 @@ class MultiplexedMessageHandlerRunner extends message_handler_runner_1.MessageHa
|
|
|
82
82
|
redis_smq_common_1.async.waterfall([
|
|
83
83
|
(cb) => {
|
|
84
84
|
const { redis } = this.config;
|
|
85
|
-
redis_smq_common_1.
|
|
85
|
+
(0, redis_smq_common_1.createClientInstance)(redis, (err, client) => {
|
|
86
86
|
if (err)
|
|
87
87
|
cb(err);
|
|
88
88
|
else if (!client)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IRequiredConfig, TQueueParams } from '../../../../types';
|
|
2
2
|
import { RedisClient } from 'redis-smq-common';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
export declare const processingQueue: {
|
|
5
|
-
cleanUpProcessingQueue(config: IRequiredConfig, redisClient: RedisClient, consumerId: string, queue: TQueueParams, multi:
|
|
6
|
-
setUpProcessingQueue(multi:
|
|
5
|
+
cleanUpProcessingQueue(config: IRequiredConfig, redisClient: RedisClient, consumerId: string, queue: TQueueParams, multi: IRedisClientMulti, cb: ICallback<void>): void;
|
|
6
|
+
setUpProcessingQueue(multi: IRedisClientMulti, queue: TQueueParams, consumerId: string): void;
|
|
7
7
|
getQueueProcessingQueues(redisClient: RedisClient, queue: TQueueParams, cb: ICallback<Record<string, string>>): void;
|
|
8
8
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TConsumerInfo, TQueueParams } from '../../../types';
|
|
2
2
|
import { RedisClient } from 'redis-smq-common';
|
|
3
|
-
import { ICallback,
|
|
3
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
4
4
|
export declare const consumerQueues: {
|
|
5
|
-
removeConsumer(multi:
|
|
5
|
+
removeConsumer(multi: IRedisClientMulti, queue: TQueueParams, consumerId: string): void;
|
|
6
6
|
getQueueConsumers(client: RedisClient, queue: TQueueParams, transform: boolean, cb: ICallback<Record<string, TConsumerInfo | string>>): void;
|
|
7
7
|
getQueueConsumerIds(client: RedisClient, queue: TQueueParams, cb: ICallback<string[]>): void;
|
|
8
8
|
countQueueConsumers(client: RedisClient, queue: TQueueParams, cb: ICallback<number>): void;
|
|
@@ -20,7 +20,7 @@ class Consumer extends base_1.Base {
|
|
|
20
20
|
this.heartbeat = null;
|
|
21
21
|
this.workerRunner = null;
|
|
22
22
|
this.setUpHeartbeat = (cb) => {
|
|
23
|
-
redis_smq_common_1.
|
|
23
|
+
(0, redis_smq_common_1.createClientInstance)(this.config.redis, (err, redisClient) => {
|
|
24
24
|
if (err)
|
|
25
25
|
cb(err);
|
|
26
26
|
else if (!redisClient)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IRequiredConfig } from '../../../types';
|
|
2
|
-
import { ICallback,
|
|
2
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
3
3
|
import { RedisClient } from 'redis-smq-common';
|
|
4
|
-
export declare function handleOfflineConsumer(config: IRequiredConfig, multi:
|
|
4
|
+
export declare function handleOfflineConsumer(config: IRequiredConfig, multi: IRedisClientMulti, redisClient: RedisClient, consumerId: string, cb: ICallback<void>): void;
|
|
@@ -20,7 +20,7 @@ class MessageManager {
|
|
|
20
20
|
}
|
|
21
21
|
static createInstance(config, cb) {
|
|
22
22
|
const cfg = (0, configuration_1.getConfiguration)(config);
|
|
23
|
-
redis_smq_common_1.
|
|
23
|
+
(0, redis_smq_common_1.createClientInstance)(cfg.redis, (err, client) => {
|
|
24
24
|
if (err)
|
|
25
25
|
cb(err);
|
|
26
26
|
else if (!client)
|
|
@@ -12,7 +12,7 @@ class SortedSet extends abstract_message_storage_1.AbstractMessageStorage {
|
|
|
12
12
|
const multi = this.redisClient.multi();
|
|
13
13
|
multi.hdel(keyMessages, messageId);
|
|
14
14
|
multi.zrem(keyMessagesWeight, messageId);
|
|
15
|
-
|
|
15
|
+
multi.exec((err) => cb(err));
|
|
16
16
|
}
|
|
17
17
|
fetchMessages(key, skip, take, cb) {
|
|
18
18
|
this.validatePaginationParams(skip, take);
|
|
@@ -73,7 +73,7 @@ class SortedSet extends abstract_message_storage_1.AbstractMessageStorage {
|
|
|
73
73
|
const multi = this.redisClient.multi();
|
|
74
74
|
multi.del(keyMessages);
|
|
75
75
|
multi.del(keyMessagesWeight);
|
|
76
|
-
|
|
76
|
+
multi.exec((err) => cb(err));
|
|
77
77
|
}
|
|
78
78
|
getMessageById(key, id, cb) {
|
|
79
79
|
const { keyMessages } = key;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RedisClient } from 'redis-smq-common';
|
|
2
|
-
import { ICallback,
|
|
2
|
+
import { ICallback, IRedisClientMulti } from 'redis-smq-common/dist/types';
|
|
3
3
|
import { IRequiredConfig, TQueueParams } from '../../../types';
|
|
4
|
-
export declare function initDeleteQueueTransaction(config: IRequiredConfig, redisClient: RedisClient, queueParams: TQueueParams, multi:
|
|
4
|
+
export declare function initDeleteQueueTransaction(config: IRequiredConfig, redisClient: RedisClient, queueParams: TQueueParams, multi: IRedisClientMulti | undefined, cb: ICallback<IRedisClientMulti>): void;
|
|
@@ -81,9 +81,9 @@ function initDeleteQueueTransaction(config, redisClient, queueParams, multi, cb)
|
|
|
81
81
|
const pQueues = processingQueues !== null && processingQueues !== void 0 ? processingQueues : [];
|
|
82
82
|
if (pQueues.length) {
|
|
83
83
|
keys.push(...pQueues);
|
|
84
|
-
tx.srem(keyProcessingQueues,
|
|
84
|
+
tx.srem(keyProcessingQueues, pQueues);
|
|
85
85
|
}
|
|
86
|
-
tx.del(
|
|
86
|
+
tx.del(keys);
|
|
87
87
|
cb(null, tx);
|
|
88
88
|
}
|
|
89
89
|
});
|
|
@@ -21,7 +21,7 @@ class QueueManager {
|
|
|
21
21
|
static createInstance(config, cb) {
|
|
22
22
|
const cfg = (0, configuration_1.getConfiguration)(config);
|
|
23
23
|
const redis = cfg.redis;
|
|
24
|
-
redis_smq_common_1.
|
|
24
|
+
(0, redis_smq_common_1.createClientInstance)(redis, (err, client) => {
|
|
25
25
|
if (err)
|
|
26
26
|
cb(err);
|
|
27
27
|
else if (!client)
|
|
@@ -8,7 +8,7 @@ export declare class QueueRateLimit {
|
|
|
8
8
|
constructor(config: IRequiredConfig, redisClient: RedisClient, logger: ICompatibleLogger);
|
|
9
9
|
clear(queue: string | TQueueParams, cb: ICallback<void>): void;
|
|
10
10
|
set(queue: string | TQueueParams, rateLimit: TQueueRateLimit, cb: ICallback<void>): void;
|
|
11
|
-
get(queue: string | TQueueParams, cb: ICallback<TQueueRateLimit>): void;
|
|
11
|
+
get(queue: string | TQueueParams, cb: ICallback<TQueueRateLimit | null>): void;
|
|
12
12
|
static hasExceeded(redisClient: RedisClient, queue: TQueueParams, rateLimit: TQueueRateLimit, cb: ICallback<boolean>): void;
|
|
13
|
-
static get(config: IRequiredConfig, redisClient: RedisClient, queue: string | TQueueParams, cb: ICallback<TQueueRateLimit>): void;
|
|
13
|
+
static get(config: IRequiredConfig, redisClient: RedisClient, queue: string | TQueueParams, cb: ICallback<TQueueRateLimit | null>): void;
|
|
14
14
|
}
|
|
@@ -17,7 +17,7 @@ class QueueRateLimit {
|
|
|
17
17
|
const multi = this.redisClient.multi();
|
|
18
18
|
multi.hdel(keyQueueSettings, keyQueueSettingsRateLimit);
|
|
19
19
|
multi.del(keyQueueRateLimitCounter);
|
|
20
|
-
|
|
20
|
+
multi.exec((err) => cb(err));
|
|
21
21
|
}
|
|
22
22
|
set(queue, rateLimit, cb) {
|
|
23
23
|
const queueParams = queue_1.Queue.getParams(this.config, queue);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "redis-smq",
|
|
3
|
-
"version": "7.0.0-rc.
|
|
3
|
+
"version": "7.0.0-rc.6",
|
|
4
4
|
"description": "A simple high-performance Redis message queue for Node.js.",
|
|
5
5
|
"author": "Weyoss <weyoss@protonmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"bluebird": "3.7.2",
|
|
37
37
|
"cron-parser": "3.5.0",
|
|
38
38
|
"lodash": "4.17.21",
|
|
39
|
-
"redis-smq-common": "1.0.0-rc.
|
|
39
|
+
"redis-smq-common": "1.0.0-rc.11",
|
|
40
40
|
"uuid": "8.3.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
@@ -91,6 +91,6 @@
|
|
|
91
91
|
},
|
|
92
92
|
"engineStrict": true,
|
|
93
93
|
"engines": {
|
|
94
|
-
"node": "
|
|
94
|
+
"node": ">=14"
|
|
95
95
|
}
|
|
96
96
|
}
|