redis-smq 7.0.6 → 7.1.0
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 +70 -0
- package/README.md +16 -11
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -1
- package/dist/misc/health-check/combined-run.js +6 -6
- package/dist/src/common/redis-keys/redis-keys.d.ts +19 -9
- package/dist/src/common/redis-keys/redis-keys.js +16 -9
- package/dist/src/lib/consumer/consumer-message-handler/acknowledge-message.js +1 -1
- package/dist/src/lib/consumer/consumer-message-handler/dead-letter-message.js +2 -2
- package/dist/src/lib/consumer/consumer-message-handler/delay-message.js +2 -2
- package/dist/src/lib/consumer/consumer-message-handler/requeue-message.js +1 -1
- package/dist/src/lib/exchange/direct-exchange.d.ts +10 -0
- package/dist/src/lib/exchange/direct-exchange.js +34 -0
- package/dist/src/lib/exchange/errors/destination-queue-required.error.d.ts +4 -0
- package/dist/src/lib/exchange/errors/destination-queue-required.error.js +11 -0
- package/dist/src/lib/exchange/errors/exchange.error.d.ts +3 -0
- package/dist/src/lib/exchange/errors/exchange.error.js +8 -0
- package/dist/src/lib/exchange/errors/invalid-exchange-data.error.d.ts +4 -0
- package/dist/src/lib/exchange/errors/invalid-exchange-data.error.js +11 -0
- package/dist/src/lib/exchange/exchange.d.ts +19 -0
- package/dist/src/lib/exchange/exchange.js +51 -0
- package/dist/src/lib/exchange/fan-out-exchange-manager.d.ts +21 -0
- package/dist/src/lib/exchange/fan-out-exchange-manager.js +160 -0
- package/dist/src/lib/exchange/fan-out-exchange.d.ts +10 -0
- package/dist/src/lib/exchange/fan-out-exchange.js +28 -0
- package/dist/src/lib/exchange/topic-exchange.d.ts +12 -0
- package/dist/src/lib/exchange/topic-exchange.js +58 -0
- package/dist/src/lib/message/errors/message-exchange-required.error.d.ts +4 -0
- package/dist/src/lib/message/errors/message-exchange-required.error.js +11 -0
- package/dist/src/lib/message/errors/message.error.d.ts +3 -0
- package/dist/src/lib/message/errors/message.error.js +8 -0
- package/dist/src/lib/message/{message-metadata.d.ts → message-state.d.ts} +12 -12
- package/dist/src/lib/message/{message-metadata.js → message-state.js} +4 -4
- package/dist/src/lib/message/message.d.ts +19 -10
- package/dist/src/lib/message/message.js +135 -77
- package/dist/src/lib/message-manager/message-storage/list.js +6 -5
- package/dist/src/lib/producer/errors/message-already-published.error.js +1 -1
- package/dist/src/lib/producer/producer.d.ts +4 -2
- package/dist/src/lib/producer/producer.js +61 -37
- package/dist/src/lib/producer/schedule-message.js +6 -5
- package/dist/src/lib/queue-manager/delete-queue-transaction.js +11 -3
- package/dist/src/lib/queue-manager/queue-manager.d.ts +3 -2
- package/dist/src/lib/queue-manager/queue-manager.js +3 -3
- package/dist/src/lib/queue-manager/queue-rate-limit.js +7 -6
- package/dist/src/lib/queue-manager/queue.d.ts +4 -1
- package/dist/src/lib/queue-manager/queue.js +24 -8
- package/dist/src/workers/delay.worker.js +2 -2
- package/dist/src/workers/requeue.worker.js +2 -2
- package/dist/src/workers/schedule.worker.js +5 -4
- package/dist/types/index.d.ts +37 -4
- package/dist/types/index.js +13 -1
- package/package.json +3 -3
- package/dist/src/lib/producer/errors/message-queue-required.error.d.ts +0 -4
- package/dist/src/lib/producer/errors/message-queue-required.error.js +0 -11
|
@@ -2,15 +2,16 @@ import { QueueRateLimit } from './queue-rate-limit';
|
|
|
2
2
|
import { Namespace } from './namespace';
|
|
3
3
|
import { QueueMetrics } from './queue-metrics';
|
|
4
4
|
import { Queue } from './queue';
|
|
5
|
+
import { RedisClient } from 'redis-smq-common';
|
|
5
6
|
import { ICallback } from 'redis-smq-common/dist/types';
|
|
6
7
|
import { IConfig } from '../../../types';
|
|
7
8
|
export declare class QueueManager {
|
|
8
|
-
|
|
9
|
+
protected readonly redisClient: RedisClient;
|
|
9
10
|
readonly namespace: Namespace;
|
|
10
11
|
readonly queue: Queue;
|
|
11
12
|
readonly queueRateLimit: QueueRateLimit;
|
|
12
13
|
readonly queueMetrics: QueueMetrics;
|
|
13
|
-
|
|
14
|
+
protected constructor(namespace: Namespace, queue: Queue, queueRateLimit: QueueRateLimit, queueMetrics: QueueMetrics, redisClient: RedisClient);
|
|
14
15
|
quit(cb: ICallback<void>): void;
|
|
15
16
|
static createInstance(config: IConfig, cb: ICallback<QueueManager>): void;
|
|
16
17
|
}
|
|
@@ -8,12 +8,12 @@ const queue_1 = require("./queue");
|
|
|
8
8
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
9
9
|
const configuration_1 = require("../../config/configuration");
|
|
10
10
|
class QueueManager {
|
|
11
|
-
constructor(
|
|
12
|
-
this.redisClient = redisClient;
|
|
11
|
+
constructor(namespace, queue, queueRateLimit, queueMetrics, redisClient) {
|
|
13
12
|
this.namespace = namespace;
|
|
14
13
|
this.queue = queue;
|
|
15
14
|
this.queueRateLimit = queueRateLimit;
|
|
16
15
|
this.queueMetrics = queueMetrics;
|
|
16
|
+
this.redisClient = redisClient;
|
|
17
17
|
}
|
|
18
18
|
quit(cb) {
|
|
19
19
|
this.redisClient.halt(cb);
|
|
@@ -33,7 +33,7 @@ class QueueManager {
|
|
|
33
33
|
const queue = new queue_1.Queue(cfg, client, nsLogger);
|
|
34
34
|
const queueRateLimit = new queue_rate_limit_1.QueueRateLimit(cfg, client, nsLogger);
|
|
35
35
|
const queueMetrics = new queue_metrics_1.QueueMetrics(cfg, client, nsLogger);
|
|
36
|
-
cb(null, new QueueManager(
|
|
36
|
+
cb(null, new QueueManager(namespace, queue, queueRateLimit, queueMetrics, client));
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueueRateLimit = void 0;
|
|
4
|
+
const types_1 = require("../../../types");
|
|
4
5
|
const redis_keys_1 = require("../../common/redis-keys/redis-keys");
|
|
5
6
|
const queue_rate_limit_error_1 = require("./errors/queue-rate-limit.error");
|
|
6
7
|
const queue_1 = require("./queue");
|
|
@@ -13,9 +14,9 @@ class QueueRateLimit {
|
|
|
13
14
|
}
|
|
14
15
|
clear(queue, cb) {
|
|
15
16
|
const queueParams = queue_1.Queue.getParams(this.config, queue);
|
|
16
|
-
const { keyQueueSettings,
|
|
17
|
+
const { keyQueueSettings, keyQueueRateLimitCounter } = redis_keys_1.redisKeys.getQueueKeys(queueParams);
|
|
17
18
|
const multi = this.redisClient.multi();
|
|
18
|
-
multi.hdel(keyQueueSettings,
|
|
19
|
+
multi.hdel(keyQueueSettings, types_1.EQueueSettingType.RATE_LIMIT);
|
|
19
20
|
multi.del(keyQueueRateLimitCounter);
|
|
20
21
|
multi.exec((err) => cb(err));
|
|
21
22
|
}
|
|
@@ -30,8 +31,8 @@ class QueueRateLimit {
|
|
|
30
31
|
cb(new queue_rate_limit_error_1.QueueRateLimitError(`Invalid rateLimit.interval. Expected a positive integer >= 1000`));
|
|
31
32
|
}
|
|
32
33
|
const validatedRateLimit = { interval, limit };
|
|
33
|
-
const { keyQueueSettings
|
|
34
|
-
this.redisClient.hset(keyQueueSettings,
|
|
34
|
+
const { keyQueueSettings } = redis_keys_1.redisKeys.getQueueKeys(queueParams);
|
|
35
|
+
this.redisClient.hset(keyQueueSettings, types_1.EQueueSettingType.RATE_LIMIT, JSON.stringify(validatedRateLimit), (err) => cb(err));
|
|
35
36
|
}
|
|
36
37
|
get(queue, cb) {
|
|
37
38
|
QueueRateLimit.get(this.config, this.redisClient, queue, cb);
|
|
@@ -50,8 +51,8 @@ class QueueRateLimit {
|
|
|
50
51
|
}
|
|
51
52
|
static get(config, redisClient, queue, cb) {
|
|
52
53
|
const queueParams = queue_1.Queue.getParams(config, queue);
|
|
53
|
-
const { keyQueueSettings
|
|
54
|
-
redisClient.hget(keyQueueSettings,
|
|
54
|
+
const { keyQueueSettings } = redis_keys_1.redisKeys.getQueueKeys(queueParams);
|
|
55
|
+
redisClient.hget(keyQueueSettings, types_1.EQueueSettingType.RATE_LIMIT, (err, reply) => {
|
|
55
56
|
if (err)
|
|
56
57
|
cb(err);
|
|
57
58
|
else if (!reply)
|
|
@@ -6,7 +6,10 @@ export declare class Queue {
|
|
|
6
6
|
protected redisClient: RedisClient;
|
|
7
7
|
protected logger: ICompatibleLogger;
|
|
8
8
|
constructor(config: IRequiredConfig, redisClient: RedisClient, logger: ICompatibleLogger);
|
|
9
|
-
create(queue: string | TQueueParams, priorityQueuing: boolean, cb: ICallback<
|
|
9
|
+
create(queue: string | TQueueParams, priorityQueuing: boolean, cb: ICallback<{
|
|
10
|
+
queue: TQueueParams;
|
|
11
|
+
settings: TQueueSettings;
|
|
12
|
+
}>): void;
|
|
10
13
|
getSettings(queue: string | TQueueParams, cb: ICallback<TQueueSettings>): void;
|
|
11
14
|
exists(queue: string | TQueueParams, cb: ICallback<boolean>): void;
|
|
12
15
|
list(cb: ICallback<TQueueParams[]>): void;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Queue = void 0;
|
|
4
|
+
const types_1 = require("../../../types");
|
|
4
5
|
const redis_keys_1 = require("../../common/redis-keys/redis-keys");
|
|
5
6
|
const queue_exists_error_1 = require("./errors/queue-exists.error");
|
|
6
7
|
const queue_not_found_error_1 = require("./errors/queue-not-found.error");
|
|
7
8
|
const delete_queue_transaction_1 = require("./delete-queue-transaction");
|
|
8
9
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
9
10
|
const redis_client_1 = require("../../common/redis-client/redis-client");
|
|
11
|
+
const empty_callback_reply_error_1 = require("redis-smq-common/dist/src/errors/empty-callback-reply.error");
|
|
10
12
|
class Queue {
|
|
11
13
|
constructor(config, redisClient, logger) {
|
|
12
14
|
this.config = config;
|
|
@@ -15,21 +17,28 @@ class Queue {
|
|
|
15
17
|
}
|
|
16
18
|
create(queue, priorityQueuing, cb) {
|
|
17
19
|
const queueParams = Queue.getParams(this.config, queue);
|
|
18
|
-
const { keyQueues, keyNsQueues, keyNamespaces, keyQueueSettings
|
|
20
|
+
const { keyQueues, keyNsQueues, keyNamespaces, keyQueueSettings } = redis_keys_1.redisKeys.getQueueKeys(queueParams);
|
|
19
21
|
const queueIndex = JSON.stringify(queueParams);
|
|
20
22
|
this.redisClient.runScript(redis_client_1.ELuaScriptName.CREATE_QUEUE, [
|
|
21
23
|
keyNamespaces,
|
|
22
24
|
keyNsQueues,
|
|
23
25
|
keyQueues,
|
|
24
26
|
keyQueueSettings,
|
|
25
|
-
|
|
27
|
+
types_1.EQueueSettingType.PRIORITY_QUEUING,
|
|
26
28
|
], [queueParams.ns, queueIndex, JSON.stringify(priorityQueuing)], (err, reply) => {
|
|
27
29
|
if (err)
|
|
28
30
|
cb(err);
|
|
29
31
|
else if (!reply)
|
|
30
32
|
cb(new queue_exists_error_1.QueueExistsError());
|
|
31
33
|
else
|
|
32
|
-
|
|
34
|
+
this.getSettings(queueParams, (err, settings) => {
|
|
35
|
+
if (err)
|
|
36
|
+
cb(err);
|
|
37
|
+
else if (!settings)
|
|
38
|
+
cb(new empty_callback_reply_error_1.EmptyCallbackReplyError());
|
|
39
|
+
else
|
|
40
|
+
cb(null, { queue: queueParams, settings });
|
|
41
|
+
});
|
|
33
42
|
});
|
|
34
43
|
}
|
|
35
44
|
getSettings(queue, cb) {
|
|
@@ -65,21 +74,28 @@ class Queue {
|
|
|
65
74
|
}
|
|
66
75
|
static getSettings(config, redisClient, queue, cb) {
|
|
67
76
|
const queueParams = Queue.getParams(config, queue);
|
|
68
|
-
const { keyQueueSettings
|
|
77
|
+
const { keyQueueSettings } = redis_keys_1.redisKeys.getQueueKeys(queueParams);
|
|
69
78
|
redisClient.hgetall(keyQueueSettings, (err, reply) => {
|
|
70
79
|
if (err)
|
|
71
80
|
cb(err);
|
|
72
81
|
else if (!reply || !Object.keys(reply).length)
|
|
73
82
|
cb(new queue_not_found_error_1.QueueNotFoundError());
|
|
74
83
|
else {
|
|
75
|
-
const queueSettings = {
|
|
84
|
+
const queueSettings = {
|
|
85
|
+
priorityQueuing: false,
|
|
86
|
+
exchange: null,
|
|
87
|
+
rateLimit: null,
|
|
88
|
+
};
|
|
76
89
|
for (const key in reply) {
|
|
77
|
-
if (key ===
|
|
90
|
+
if (key === types_1.EQueueSettingType.PRIORITY_QUEUING) {
|
|
78
91
|
queueSettings.priorityQueuing = JSON.parse(reply[key]);
|
|
79
92
|
}
|
|
80
|
-
if (key ===
|
|
93
|
+
if (key === types_1.EQueueSettingType.RATE_LIMIT) {
|
|
81
94
|
queueSettings.rateLimit = JSON.parse(reply[key]);
|
|
82
95
|
}
|
|
96
|
+
if (key === types_1.EQueueSettingType.EXCHANGE) {
|
|
97
|
+
queueSettings.exchange = reply[key];
|
|
98
|
+
}
|
|
83
99
|
}
|
|
84
100
|
cb(null, queueSettings);
|
|
85
101
|
}
|
|
@@ -87,7 +103,7 @@ class Queue {
|
|
|
87
103
|
}
|
|
88
104
|
static list(redisClient, cb) {
|
|
89
105
|
const { keyQueues } = redis_keys_1.redisKeys.getMainKeys();
|
|
90
|
-
redisClient.
|
|
106
|
+
redisClient.sscanFallback(keyQueues, (err, reply) => {
|
|
91
107
|
if (err)
|
|
92
108
|
cb(err);
|
|
93
109
|
else if (!reply)
|
|
@@ -20,9 +20,9 @@ class DelayWorker extends redis_smq_common_1.Worker {
|
|
|
20
20
|
redis_smq_common_1.async.each(messages, (i, _, done) => {
|
|
21
21
|
multi.lrem(keyDelayedMessages, 1, i);
|
|
22
22
|
const message = message_1.Message.createFromMessage(i);
|
|
23
|
-
message.
|
|
23
|
+
message.getRequiredMessageState().incrAttempts();
|
|
24
24
|
const delay = message.getRetryDelay();
|
|
25
|
-
message.
|
|
25
|
+
message.getRequiredMessageState().setNextRetryDelay(delay);
|
|
26
26
|
(0, schedule_message_1.scheduleMessage)(multi, message);
|
|
27
27
|
done();
|
|
28
28
|
}, (err) => {
|
|
@@ -18,10 +18,10 @@ class RequeueWorker extends redis_smq_common_1.Worker {
|
|
|
18
18
|
const multi = this.redisClient.multi();
|
|
19
19
|
redis_smq_common_1.async.each(messages, (messageStr, _, done) => {
|
|
20
20
|
const message = message_1.Message.createFromMessage(messageStr);
|
|
21
|
-
const queue = message.
|
|
21
|
+
const queue = message.getDestinationQueue();
|
|
22
22
|
const { keyQueuePending, keyQueuePendingPriorityMessageWeight } = redis_keys_1.redisKeys.getQueueKeys(queue);
|
|
23
23
|
multi.lrem(keyRequeueMessages, 1, messageStr);
|
|
24
|
-
message.
|
|
24
|
+
message.getRequiredMessageState().incrAttempts();
|
|
25
25
|
if (message.hasPriority()) {
|
|
26
26
|
const priority = message.getPriority();
|
|
27
27
|
if (priority === null)
|
|
@@ -5,6 +5,7 @@ const redis_keys_1 = require("../common/redis-keys/redis-keys");
|
|
|
5
5
|
const message_1 = require("../lib/message/message");
|
|
6
6
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
7
7
|
const redis_client_1 = require("../common/redis-client/redis-client");
|
|
8
|
+
const types_1 = require("../../types");
|
|
8
9
|
class ScheduleWorker extends redis_smq_common_1.Worker {
|
|
9
10
|
constructor(redisClient, managed) {
|
|
10
11
|
super(managed);
|
|
@@ -44,13 +45,13 @@ class ScheduleWorker extends redis_smq_common_1.Worker {
|
|
|
44
45
|
redis_smq_common_1.async.each(messages, (msg, _, done) => {
|
|
45
46
|
var _a;
|
|
46
47
|
const message = message_1.Message.createFromMessage(msg);
|
|
47
|
-
const queue = message.
|
|
48
|
-
const { keyQueueSettings,
|
|
48
|
+
const queue = message.getDestinationQueue();
|
|
49
|
+
const { keyQueueSettings, keyQueuePending, keyQueuePendingPriorityMessages, keyQueuePendingPriorityMessageWeight, keyScheduledMessageWeight, keyScheduledMessages, } = redis_keys_1.redisKeys.getQueueKeys(queue);
|
|
49
50
|
const nextScheduleTimestamp = message.getNextScheduledTimestamp();
|
|
50
|
-
message.
|
|
51
|
+
message.getRequiredMessageState().setPublishedAt(Date.now());
|
|
51
52
|
this.redisClient.runScript(redis_client_1.ELuaScriptName.ENQUEUE_SCHEDULED_MESSAGE, [
|
|
52
53
|
keyQueueSettings,
|
|
53
|
-
|
|
54
|
+
types_1.EQueueSettingType.PRIORITY_QUEUING,
|
|
54
55
|
keyQueuePendingPriorityMessages,
|
|
55
56
|
keyQueuePendingPriorityMessageWeight,
|
|
56
57
|
keyQueuePending,
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ import { Message } from '../src/lib/message/message';
|
|
|
4
4
|
import { redisKeys } from '../src/common/redis-keys/redis-keys';
|
|
5
5
|
import { ICallback, TLoggerConfig, TRedisConfig } from 'redis-smq-common/dist/types';
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
|
+
import { DirectExchange } from '../src/lib/exchange/direct-exchange';
|
|
8
|
+
import { TopicExchange } from '../src/lib/exchange/topic-exchange';
|
|
9
|
+
import { FanOutExchange } from '../src/lib/exchange/fan-out-exchange';
|
|
7
10
|
export declare type TEventListenerInitArgs = {
|
|
8
11
|
eventProvider: EventEmitter;
|
|
9
12
|
config: IRequiredConfig;
|
|
@@ -76,6 +79,10 @@ export declare enum EMessageUnacknowledgedCause {
|
|
|
76
79
|
OFFLINE_CONSUMER = "offline_consumer",
|
|
77
80
|
TTL_EXPIRED = "ttl_expired"
|
|
78
81
|
}
|
|
82
|
+
export declare type TTopicParams = {
|
|
83
|
+
topic: string;
|
|
84
|
+
ns: string;
|
|
85
|
+
};
|
|
79
86
|
export declare type TQueueParams = {
|
|
80
87
|
name: string;
|
|
81
88
|
ns: string;
|
|
@@ -86,8 +93,14 @@ export declare type TQueueRateLimit = {
|
|
|
86
93
|
};
|
|
87
94
|
export declare type TQueueSettings = {
|
|
88
95
|
priorityQueuing: boolean;
|
|
89
|
-
rateLimit
|
|
96
|
+
rateLimit: TQueueRateLimit | null;
|
|
97
|
+
exchange: string | null;
|
|
90
98
|
};
|
|
99
|
+
export declare enum EQueueSettingType {
|
|
100
|
+
PRIORITY_QUEUING = "PRIORITY_QUEUING",
|
|
101
|
+
RATE_LIMIT = "RATE_LIMIT",
|
|
102
|
+
EXCHANGE = "EXCHANGE"
|
|
103
|
+
}
|
|
91
104
|
export declare type TConsumerInfo = {
|
|
92
105
|
ipAddress: string[];
|
|
93
106
|
hostname: string;
|
|
@@ -117,7 +130,8 @@ export declare type TConsumerMessageHandlerParams = {
|
|
|
117
130
|
};
|
|
118
131
|
export declare type TMessageJSON = {
|
|
119
132
|
createdAt: number;
|
|
120
|
-
queue: TQueueParams | null;
|
|
133
|
+
queue: TQueueParams | string | null;
|
|
134
|
+
exchange: IDirectExchangeParams | ITopicExchangeParams | IFanOutExchangeParams | null;
|
|
121
135
|
ttl: number;
|
|
122
136
|
retryThreshold: number;
|
|
123
137
|
retryDelay: number;
|
|
@@ -128,9 +142,24 @@ export declare type TMessageJSON = {
|
|
|
128
142
|
scheduledDelay: number | null;
|
|
129
143
|
scheduledRepeatPeriod: number | null;
|
|
130
144
|
scheduledRepeat: number;
|
|
131
|
-
|
|
145
|
+
messageState: TMessageState | null;
|
|
132
146
|
};
|
|
133
|
-
export declare
|
|
147
|
+
export declare enum EExchangeType {
|
|
148
|
+
DIRECT = 0,
|
|
149
|
+
FANOUT = 1,
|
|
150
|
+
TOPIC = 2
|
|
151
|
+
}
|
|
152
|
+
export declare type TExchange = DirectExchange | TopicExchange | FanOutExchange;
|
|
153
|
+
export interface IExchangeParams<TBindingParams, TBindingType extends EExchangeType> {
|
|
154
|
+
exchangeTag: string;
|
|
155
|
+
destinationQueue: TQueueParams | null;
|
|
156
|
+
bindingParams: TBindingParams;
|
|
157
|
+
type: TBindingType;
|
|
158
|
+
}
|
|
159
|
+
export declare type IDirectExchangeParams = IExchangeParams<TQueueParams | string, EExchangeType.DIRECT>;
|
|
160
|
+
export declare type IFanOutExchangeParams = IExchangeParams<string, EExchangeType.FANOUT>;
|
|
161
|
+
export declare type ITopicExchangeParams = IExchangeParams<TTopicParams | string, EExchangeType.TOPIC>;
|
|
162
|
+
export declare type TMessageState = {
|
|
134
163
|
uuid: string;
|
|
135
164
|
publishedAt: number | null;
|
|
136
165
|
scheduledAt: number | null;
|
|
@@ -147,3 +176,7 @@ export declare type TMessageConsumeOptions = {
|
|
|
147
176
|
retryDelay: number;
|
|
148
177
|
consumeTimeout: number;
|
|
149
178
|
};
|
|
179
|
+
export declare type TProduceMessageReply = {
|
|
180
|
+
messages: Message[];
|
|
181
|
+
scheduled: boolean;
|
|
182
|
+
};
|
package/dist/types/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EMessageUnacknowledgedCause = exports.EMessageDeadLetterCause = void 0;
|
|
3
|
+
exports.EExchangeType = exports.EQueueSettingType = exports.EMessageUnacknowledgedCause = exports.EMessageDeadLetterCause = void 0;
|
|
4
4
|
var EMessageDeadLetterCause;
|
|
5
5
|
(function (EMessageDeadLetterCause) {
|
|
6
6
|
EMessageDeadLetterCause["TTL_EXPIRED"] = "ttl_expired";
|
|
@@ -15,4 +15,16 @@ var EMessageUnacknowledgedCause;
|
|
|
15
15
|
EMessageUnacknowledgedCause["OFFLINE_CONSUMER"] = "offline_consumer";
|
|
16
16
|
EMessageUnacknowledgedCause["TTL_EXPIRED"] = "ttl_expired";
|
|
17
17
|
})(EMessageUnacknowledgedCause = exports.EMessageUnacknowledgedCause || (exports.EMessageUnacknowledgedCause = {}));
|
|
18
|
+
var EQueueSettingType;
|
|
19
|
+
(function (EQueueSettingType) {
|
|
20
|
+
EQueueSettingType["PRIORITY_QUEUING"] = "PRIORITY_QUEUING";
|
|
21
|
+
EQueueSettingType["RATE_LIMIT"] = "RATE_LIMIT";
|
|
22
|
+
EQueueSettingType["EXCHANGE"] = "EXCHANGE";
|
|
23
|
+
})(EQueueSettingType = exports.EQueueSettingType || (exports.EQueueSettingType = {}));
|
|
24
|
+
var EExchangeType;
|
|
25
|
+
(function (EExchangeType) {
|
|
26
|
+
EExchangeType[EExchangeType["DIRECT"] = 0] = "DIRECT";
|
|
27
|
+
EExchangeType[EExchangeType["FANOUT"] = 1] = "FANOUT";
|
|
28
|
+
EExchangeType[EExchangeType["TOPIC"] = 2] = "TOPIC";
|
|
29
|
+
})(EExchangeType = exports.EExchangeType || (exports.EExchangeType = {}));
|
|
18
30
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "redis-smq",
|
|
3
|
-
"version": "7.0
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"description": "A simple high-performance Redis message queue for Node.js.",
|
|
5
5
|
"author": "Weyoss <weyoss@protonmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"uuid": "8.3.2"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"redis-smq-common": "^1.0.
|
|
42
|
+
"redis-smq-common": "^1.0.4"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/bluebird": "3.5.36",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"jest": "27.2.4",
|
|
60
60
|
"lint-staged": "11.1.2",
|
|
61
61
|
"prettier": "2.4.1",
|
|
62
|
-
"redis-smq-common": "^1.0.
|
|
62
|
+
"redis-smq-common": "^1.0.4",
|
|
63
63
|
"supertest": "6.1.6",
|
|
64
64
|
"ts-jest": "27.0.5",
|
|
65
65
|
"ts-node": "10.2.1",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MessageQueueRequiredError = void 0;
|
|
4
|
-
const redis_smq_common_1 = require("redis-smq-common");
|
|
5
|
-
class MessageQueueRequiredError extends redis_smq_common_1.errors.RedisSMQError {
|
|
6
|
-
constructor(msg = 'Can not publish a message without a message queue') {
|
|
7
|
-
super(msg);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.MessageQueueRequiredError = MessageQueueRequiredError;
|
|
11
|
-
//# sourceMappingURL=message-queue-required.error.js.map
|