redis-smq 5.0.2 → 5.0.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 +28 -35
- package/dist/src/system/base.d.ts +5 -5
- package/dist/src/system/base.js +18 -19
- package/dist/src/system/base.js.map +1 -1
- package/dist/src/system/consumer/{consumer-message-rate-provider.d.ts → consumer-message-rate.d.ts} +7 -10
- package/dist/src/system/consumer/{consumer-message-rate-provider.js → consumer-message-rate.js} +10 -8
- package/dist/src/system/consumer/consumer-message-rate.js.map +1 -0
- package/dist/src/system/consumer/consumer.d.ts +3 -4
- package/dist/src/system/consumer/consumer.js +24 -15
- package/dist/src/system/consumer/consumer.js.map +1 -1
- package/dist/src/system/message-rate.d.ts +6 -7
- package/dist/src/system/message-rate.js +7 -9
- package/dist/src/system/message-rate.js.map +1 -1
- package/dist/src/system/producer/producer-message-rate.d.ts +15 -0
- package/dist/src/system/producer/{producer-message-rate-provider.js → producer-message-rate.js} +10 -8
- package/dist/src/system/producer/producer-message-rate.js.map +1 -0
- package/dist/src/system/producer/producer.d.ts +4 -4
- package/dist/src/system/producer/producer.js +7 -8
- package/dist/src/system/producer/producer.js.map +1 -1
- package/dist/src/system/queue-manager/queue-manager.d.ts +3 -2
- package/dist/src/system/queue-manager/queue-manager.js +11 -11
- package/dist/src/system/queue-manager/queue-manager.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +2 -6
- package/dist/types/index.js.map +1 -1
- package/docs/api/consumer.md +17 -3
- package/docs/api/message.md +47 -124
- package/docs/api/producer.md +16 -6
- package/docs/api/scheduler.md +5 -4
- package/docs/configuration.md +6 -17
- package/docs/http-api.md +2 -2
- package/docs/logs.md +2 -7
- package/logo.png +0 -0
- package/package.json +2 -2
- package/dist/src/system/consumer/consumer-message-rate-provider.js.map +0 -1
- package/dist/src/system/producer/producer-message-rate-provider.d.ts +0 -15
- package/dist/src/system/producer/producer-message-rate-provider.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 5.0.6 (2021-11-26)
|
|
4
|
+
|
|
5
|
+
* Reviewed and updated documentation files.
|
|
6
|
+
|
|
7
|
+
## 5.0.5 (2021-11-25)
|
|
8
|
+
|
|
9
|
+
* Minor improvements: refactored and cleaned up MessageRate and QueueManager classes.
|
|
10
|
+
|
|
11
|
+
## 5.0.4 (2021-11-24)
|
|
12
|
+
|
|
13
|
+
* Updated RedisSMQ logo.
|
|
14
|
+
* Bumped redis-smq-monitor to v5.0.3.
|
|
15
|
+
|
|
16
|
+
## 5.0.3 (2021-11-23)
|
|
17
|
+
|
|
18
|
+
* Updated RedisSMQ logo.
|
|
19
|
+
|
|
3
20
|
## 5.0.2 (2021-11-23)
|
|
4
21
|
|
|
5
22
|
* Added RedisSMQ logo.
|
package/README.md
CHANGED
|
@@ -31,21 +31,19 @@ High-level overview of how RedisSMQ works:
|
|
|
31
31
|
## Features
|
|
32
32
|
|
|
33
33
|
* **[High-performance message processing](docs/performance.md)**
|
|
34
|
-
* **Scalable**: A queue can be consumed by
|
|
35
|
-
* **Persistent**:
|
|
34
|
+
* **Scalable**: A queue can be consumed by multiple concurrent consumers, running on different hosts.
|
|
35
|
+
* **Persistent**: Messages are not lost in case of consumer failures.
|
|
36
36
|
* **Atomic**: A message can be delivered only to one consumer at a time.
|
|
37
|
-
* **[Message expiration](docs/api/message.md)**: A message will
|
|
38
|
-
TTL (time-to-live).
|
|
39
|
-
* **[Message consume timeout](docs/api/message.md)**:
|
|
40
|
-
message processing is cancelled and the message is re-queued again.
|
|
37
|
+
* **[Message expiration](docs/api/message.md#messageprototypesetttl)**: A message will not be delivered if it has been in a queue for longer
|
|
38
|
+
than a given amount of time, called TTL (time-to-live).
|
|
39
|
+
* **[Message consume timeout](docs/api/message.md#messageprototypesetconsumetimeout)**: Timeout for a consumer to consume a message.
|
|
41
40
|
* **[Delaying and scheduling message delivery](docs/api/scheduler.md)**: Messages can be configured to be delayed, delivered
|
|
42
41
|
for N times with an optional period between deliveries, and to be scheduled using CRON expressions.
|
|
43
42
|
* **[Reliable Priority Queues](docs/priority-queues.md)**: Supports priority messaging.
|
|
44
43
|
* **[HTTP API](docs/http-api.md)**: an HTTP interface is provided to interact with the MQ.
|
|
45
|
-
* **[Web UI](docs/web-ui.md)**:
|
|
46
|
-
|
|
47
|
-
* **
|
|
48
|
-
* **Highly optimized**: No promises, no async/await, small memory footprint, no memory leaks. See [callbacks vs promises vs async/await benchmarks](http://bluebirdjs.com/docs/benchmarks.html).
|
|
44
|
+
* **[Web UI](docs/web-ui.md)**: Using the Web UI you can monitor and manage the MQ is real-time.
|
|
45
|
+
* **[JSON Logging](docs/logs.md)**: Supports JSON log format for troubleshooting and debugging.
|
|
46
|
+
* **Highly optimized**: 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).
|
|
49
47
|
* **[Configurable](docs/configuration.md)**: Many options and features can be configured.
|
|
50
48
|
* **Rigorously tested**: With 79+ tests and code coverage no less than 80%.
|
|
51
49
|
* **Supports both redis & ioredis**: RedisSMQ can be configured to use either `redis` or `ioredis`
|
|
@@ -57,7 +55,7 @@ High-level overview of how RedisSMQ works:
|
|
|
57
55
|
2. [Installation](#installation)
|
|
58
56
|
3. [Configuration](#configuration)
|
|
59
57
|
4. [Usage](#usage)
|
|
60
|
-
1.
|
|
58
|
+
1. Basics
|
|
61
59
|
1. [Message Class](#message-class)
|
|
62
60
|
2. [Producer Class](#producer-class)
|
|
63
61
|
3. [Consumer Class](#consumer-class)
|
|
@@ -109,23 +107,18 @@ See [Configuration](docs/configuration.md) for more details.
|
|
|
109
107
|
|
|
110
108
|
### Basics
|
|
111
109
|
|
|
112
|
-
RedisSMQ provides 3 classes: Message
|
|
110
|
+
RedisSMQ provides 3 classes: `Message`, `Producer`, and `Consumer` in order to work with the message queue.
|
|
113
111
|
|
|
114
112
|
#### Message Class
|
|
115
113
|
|
|
116
|
-
Message class is
|
|
117
|
-
the required methods needed to construct and deal with messages.
|
|
114
|
+
`Message` class is responsible for creating and manipulating messages.
|
|
118
115
|
|
|
119
116
|
```javascript
|
|
120
117
|
const { Message } = require('redis-smq');
|
|
121
118
|
const message = new Message();
|
|
122
119
|
message
|
|
123
120
|
.setBody({hello: 'world'})
|
|
124
|
-
.setTTL(3600000)
|
|
125
|
-
.setScheduledDelay(10000) // in millis
|
|
126
|
-
.setScheduledRepeat(6)
|
|
127
|
-
.setScheduledPeriod(60000)
|
|
128
|
-
.setScheduledCron('* 30 * * * *');
|
|
121
|
+
.setTTL(3600000); // in millis
|
|
129
122
|
|
|
130
123
|
let messageTTL = message.getTTL();
|
|
131
124
|
```
|
|
@@ -134,10 +127,8 @@ See [Message Reference](docs/api/message.md) for more details.
|
|
|
134
127
|
|
|
135
128
|
#### Producer Class
|
|
136
129
|
|
|
137
|
-
Producer class is in turn responsible for
|
|
138
|
-
|
|
139
|
-
Each producer instance has an associated message queue and provides `produceMessage()` method which handle the
|
|
140
|
-
message and decides to either send it to the message queue scheduler or to immediately enqueue it for delivery.
|
|
130
|
+
`Producer` class is in turn responsible for publishing messages. Each `Producer` instance is associated with a message
|
|
131
|
+
queue and provides the `produceMessage()` method to publish a message.
|
|
141
132
|
|
|
142
133
|
```javascript
|
|
143
134
|
// filename: ./examples/javascript/ns1-test-queue-producer.js
|
|
@@ -162,12 +153,13 @@ See [Producer Reference](docs/api/producer.md) for more details.
|
|
|
162
153
|
|
|
163
154
|
#### Consumer Class
|
|
164
155
|
|
|
165
|
-
The Consumer class is the
|
|
166
|
-
`consume()`
|
|
156
|
+
The `Consumer` class is the parent class for all your consumers, which are required to implement the abstract method
|
|
157
|
+
`consume()` from the parent class.
|
|
167
158
|
|
|
168
|
-
|
|
159
|
+
Once a message is received, the `consume()` method get invoked with the received message as its first argument.
|
|
169
160
|
|
|
170
|
-
|
|
161
|
+
In a typical scenario, consumers are saved per files, so that each file represents a consumer, which can be started
|
|
162
|
+
from CLI as shown in the example bellow.
|
|
171
163
|
|
|
172
164
|
```javascript
|
|
173
165
|
// filename: ./examples/javascript/ns1-test-queue-consumer.js
|
|
@@ -186,22 +178,23 @@ const consumer = new TestQueueConsumer('test_queue');
|
|
|
186
178
|
consumer.run();
|
|
187
179
|
```
|
|
188
180
|
|
|
189
|
-
|
|
190
|
-
and wait for messages:
|
|
181
|
+
Starting a consumer:
|
|
191
182
|
|
|
192
183
|
```text
|
|
193
184
|
$ node ./examples/javascript/test-queue-consumer.js
|
|
194
185
|
```
|
|
195
186
|
|
|
196
|
-
|
|
197
|
-
without arguments.
|
|
187
|
+
To acknowledge a received message, you invoke the callback function without arguments.
|
|
198
188
|
|
|
199
189
|
The message acknowledgment informs the MQ that the message has been successfully consumed.
|
|
200
190
|
|
|
201
|
-
If an error
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
191
|
+
If an error occurred, the message is unacknowledged by passing the error to the callback function.
|
|
192
|
+
|
|
193
|
+
By default, unacknowledged messages are re-queued and delivered again unless **message retry threshold** is exceeded.
|
|
194
|
+
Then the messages are moved to **dead-letter queue (DLQ)**.
|
|
195
|
+
|
|
196
|
+
Each message queue has a system generated corresponding queue called `dead-letter queue` that holds all messages
|
|
197
|
+
that couldn't be processed or can not be delivered to consumers.
|
|
205
198
|
|
|
206
199
|
See [Consumer Reference](docs/api/consumer.md) for more details.
|
|
207
200
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import { IConfig,
|
|
3
|
+
import { IConfig, ICallback, TInstanceRedisKeys, TUnaryFunction, TFunction } from '../../types';
|
|
4
4
|
import { PowerManager } from './common/power-manager';
|
|
5
5
|
import * as BunyanLogger from 'bunyan';
|
|
6
6
|
import { MessageRate } from './message-rate';
|
|
7
7
|
import { Broker } from './broker';
|
|
8
8
|
import { RedisClient } from './redis-client/redis-client';
|
|
9
|
-
export declare abstract class Base extends EventEmitter {
|
|
9
|
+
export declare abstract class Base<TMessageRate extends MessageRate> extends EventEmitter {
|
|
10
10
|
protected readonly id: string;
|
|
11
11
|
protected readonly queueName: string;
|
|
12
12
|
protected readonly config: IConfig;
|
|
@@ -14,13 +14,13 @@ export declare abstract class Base extends EventEmitter {
|
|
|
14
14
|
protected readonly powerManager: PowerManager;
|
|
15
15
|
protected readonly redisKeys: TInstanceRedisKeys;
|
|
16
16
|
protected broker: Broker | null;
|
|
17
|
-
protected messageRate: MessageRate | null;
|
|
18
17
|
protected sharedRedisClient: RedisClient | null;
|
|
18
|
+
protected messageRate: TMessageRate | null;
|
|
19
19
|
constructor(queueName: string, config: IConfig);
|
|
20
20
|
private setUpSharedRedisClient;
|
|
21
|
-
private setUpMessageRate;
|
|
22
21
|
private setUpMessageQueue;
|
|
23
22
|
private setUpBroker;
|
|
23
|
+
private setUpMessageRate;
|
|
24
24
|
protected registerEventsHandlers(): void;
|
|
25
25
|
protected goingUp(): TFunction[];
|
|
26
26
|
protected goingDown(): TUnaryFunction<ICallback<void>>[];
|
|
@@ -34,5 +34,5 @@ export declare abstract class Base extends EventEmitter {
|
|
|
34
34
|
getConfig(): IConfig;
|
|
35
35
|
getQueueName(): string;
|
|
36
36
|
getRedisKeys(): TInstanceRedisKeys;
|
|
37
|
-
abstract
|
|
37
|
+
abstract getMessageRate(redisClient: RedisClient): TMessageRate;
|
|
38
38
|
}
|
package/dist/src/system/base.js
CHANGED
|
@@ -6,7 +6,6 @@ const events_1 = require("events");
|
|
|
6
6
|
const async = require("async");
|
|
7
7
|
const power_manager_1 = require("./common/power-manager");
|
|
8
8
|
const logger_1 = require("./common/logger");
|
|
9
|
-
const message_rate_1 = require("./message-rate");
|
|
10
9
|
const events_2 = require("./common/events");
|
|
11
10
|
const broker_1 = require("./broker");
|
|
12
11
|
const redis_keys_1 = require("./common/redis-keys");
|
|
@@ -19,8 +18,8 @@ class Base extends events_1.EventEmitter {
|
|
|
19
18
|
var _a;
|
|
20
19
|
super();
|
|
21
20
|
this.broker = null;
|
|
22
|
-
this.messageRate = null;
|
|
23
21
|
this.sharedRedisClient = null;
|
|
22
|
+
this.messageRate = null;
|
|
24
23
|
this.setUpSharedRedisClient = (cb) => {
|
|
25
24
|
this.logger.debug(`Set up shared RedisClient instance...`);
|
|
26
25
|
redis_client_1.RedisClient.getNewInstance(this.config, (err, client) => {
|
|
@@ -34,28 +33,12 @@ class Base extends events_1.EventEmitter {
|
|
|
34
33
|
}
|
|
35
34
|
});
|
|
36
35
|
};
|
|
37
|
-
this.setUpMessageRate = (cb) => {
|
|
38
|
-
this.logger.debug(`Set up MessageRate...`);
|
|
39
|
-
const { monitor } = this.config;
|
|
40
|
-
if (monitor && monitor.enabled) {
|
|
41
|
-
if (!this.sharedRedisClient)
|
|
42
|
-
cb(new Error(`Expected an instance of RedisClient`));
|
|
43
|
-
else {
|
|
44
|
-
this.messageRate = new message_rate_1.MessageRate(this, this.sharedRedisClient);
|
|
45
|
-
cb();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.logger.debug(`Skipping MessageRate setup as monitor not enabled...`);
|
|
50
|
-
cb();
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
36
|
this.setUpMessageQueue = (messageManager, cb) => {
|
|
54
37
|
this.logger.debug(`Set up message queue (${this.queueName})...`);
|
|
55
38
|
if (!this.sharedRedisClient)
|
|
56
39
|
cb(new Error(`Expected an instance of RedisClient`));
|
|
57
40
|
else
|
|
58
|
-
queue_manager_1.QueueManager.setUpMessageQueue(this, this.sharedRedisClient, cb);
|
|
41
|
+
queue_manager_1.QueueManager.setUpMessageQueue(this.queueName, this.sharedRedisClient, cb);
|
|
59
42
|
};
|
|
60
43
|
this.setUpBroker = (cb) => {
|
|
61
44
|
this.logger.debug(`Set up Broker instance...`);
|
|
@@ -67,6 +50,22 @@ class Base extends events_1.EventEmitter {
|
|
|
67
50
|
cb();
|
|
68
51
|
}
|
|
69
52
|
};
|
|
53
|
+
this.setUpMessageRate = (cb) => {
|
|
54
|
+
this.logger.debug(`Set up MessageRate...`);
|
|
55
|
+
const { monitor } = this.config;
|
|
56
|
+
if (monitor && monitor.enabled) {
|
|
57
|
+
if (!this.sharedRedisClient)
|
|
58
|
+
cb(new Error(`Expected an instance of RedisClient`));
|
|
59
|
+
else {
|
|
60
|
+
this.messageRate = this.getMessageRate(this.sharedRedisClient);
|
|
61
|
+
cb();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.logger.debug(`Skipping MessageRate setup as monitor not enabled...`);
|
|
66
|
+
cb();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
70
69
|
if (config.namespace) {
|
|
71
70
|
redis_keys_1.redisKeys.setNamespace(config.namespace);
|
|
72
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/system/base.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAClC,mCAAsC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/system/base.ts"],"names":[],"mappings":"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"}
|
package/dist/src/system/consumer/{consumer-message-rate-provider.d.ts → consumer-message-rate.d.ts}
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Consumer } from './consumer';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { IConsumerMessageRateFields } from '../../../types';
|
|
3
|
+
import { MessageRate } from '../message-rate';
|
|
4
|
+
import { RedisClient } from '../redis-client/redis-client';
|
|
5
|
+
export declare class ConsumerMessageRate extends MessageRate<IConsumerMessageRateFields> {
|
|
4
6
|
protected consumer: Consumer;
|
|
5
7
|
protected keyConsumerRateProcessing: string;
|
|
6
8
|
protected keyConsumerRateAcknowledged: string;
|
|
@@ -13,14 +15,9 @@ export declare class ConsumerMessageRateProvider implements IMessageRateProvider
|
|
|
13
15
|
protected unacknowledgedRate: number;
|
|
14
16
|
protected idleStack: number[];
|
|
15
17
|
protected isIdle: boolean;
|
|
16
|
-
constructor(consumer: Consumer);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
acknowledgedRate: number;
|
|
20
|
-
unacknowledgedRate: number;
|
|
21
|
-
isIdle: boolean;
|
|
22
|
-
};
|
|
23
|
-
format(stats: IConsumerStats): string[];
|
|
18
|
+
constructor(consumer: Consumer, redisClient: RedisClient);
|
|
19
|
+
getRateFields(): IConsumerMessageRateFields;
|
|
20
|
+
formatRateFields(rates: IConsumerMessageRateFields): string[];
|
|
24
21
|
incrementProcessingSlot(): void;
|
|
25
22
|
incrementAcknowledgedSlot(): void;
|
|
26
23
|
incrementUnacknowledgedSlot(): void;
|
package/dist/src/system/consumer/{consumer-message-rate-provider.js → consumer-message-rate.js}
RENAMED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ConsumerMessageRate = void 0;
|
|
4
4
|
const events_1 = require("../common/events");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const message_rate_1 = require("../message-rate");
|
|
6
|
+
class ConsumerMessageRate extends message_rate_1.MessageRate {
|
|
7
|
+
constructor(consumer, redisClient) {
|
|
8
|
+
super(redisClient);
|
|
7
9
|
this.processingSlots = new Array(1000).fill(0);
|
|
8
10
|
this.acknowledgedSlots = new Array(1000).fill(0);
|
|
9
11
|
this.unacknowledgedSlots = new Array(1000).fill(0);
|
|
@@ -18,7 +20,7 @@ class ConsumerMessageRateProvider {
|
|
|
18
20
|
this.keyConsumerRateAcknowledged = keyRateConsumerAcknowledged;
|
|
19
21
|
this.keyConsumerRateUnacknowledged = keyRateConsumerUnacknowledged;
|
|
20
22
|
}
|
|
21
|
-
|
|
23
|
+
getRateFields() {
|
|
22
24
|
this.processingRate = this.processingSlots.reduce((acc, cur) => acc + cur, 0);
|
|
23
25
|
this.processingSlots.fill(0);
|
|
24
26
|
this.acknowledgedRate = this.acknowledgedSlots.reduce((acc, cur) => acc + cur, 0);
|
|
@@ -44,9 +46,9 @@ class ConsumerMessageRateProvider {
|
|
|
44
46
|
isIdle: this.isIdle,
|
|
45
47
|
};
|
|
46
48
|
}
|
|
47
|
-
|
|
49
|
+
formatRateFields(rates) {
|
|
48
50
|
const now = Date.now();
|
|
49
|
-
const { processingRate, acknowledgedRate, unacknowledgedRate } =
|
|
51
|
+
const { processingRate, acknowledgedRate, unacknowledgedRate } = rates;
|
|
50
52
|
return [
|
|
51
53
|
this.keyConsumerRateProcessing,
|
|
52
54
|
`${processingRate}|${now}`,
|
|
@@ -69,5 +71,5 @@ class ConsumerMessageRateProvider {
|
|
|
69
71
|
this.unacknowledgedSlots[slot] += 1;
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
|
-
exports.
|
|
73
|
-
//# sourceMappingURL=consumer-message-rate
|
|
74
|
+
exports.ConsumerMessageRate = ConsumerMessageRate;
|
|
75
|
+
//# sourceMappingURL=consumer-message-rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumer-message-rate.js","sourceRoot":"","sources":["../../../../src/system/consumer/consumer-message-rate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { EMessageUnacknowledgedCause, ICallback, TUnaryFunction } from '../../../types';
|
|
2
2
|
import { Base } from '../base';
|
|
3
3
|
import { Message } from '../message';
|
|
4
|
-
import {
|
|
4
|
+
import { ConsumerMessageRate } from './consumer-message-rate';
|
|
5
5
|
import { RedisClient } from '../redis-client/redis-client';
|
|
6
6
|
import { ConsumerFrontend } from './consumer-frontend';
|
|
7
|
-
export declare class Consumer extends Base {
|
|
7
|
+
export declare class Consumer extends Base<ConsumerMessageRate> {
|
|
8
8
|
private consumerRedisClient;
|
|
9
9
|
private heartbeat;
|
|
10
|
-
private messageRateProvider;
|
|
11
10
|
private consumerWorkers;
|
|
12
11
|
private consumerFrontend;
|
|
13
12
|
protected getConsumerRedisClient(cb: TUnaryFunction<RedisClient>): void;
|
|
@@ -17,6 +16,6 @@ export declare class Consumer extends Base {
|
|
|
17
16
|
protected handleReceivedMessage(json: string): void;
|
|
18
17
|
protected goingUp(): TUnaryFunction<ICallback<void>>[];
|
|
19
18
|
protected goingDown(): TUnaryFunction<ICallback<void>>[];
|
|
20
|
-
getMessageRateProvider(): ConsumerMessageRateProvider;
|
|
21
19
|
setConsumerFrontend(consumerMessageHandler: ConsumerFrontend): Consumer;
|
|
20
|
+
getMessageRate(redisClient: RedisClient): ConsumerMessageRate;
|
|
22
21
|
}
|
|
@@ -4,19 +4,19 @@ exports.Consumer = void 0;
|
|
|
4
4
|
const types_1 = require("../../../types");
|
|
5
5
|
const base_1 = require("../base");
|
|
6
6
|
const message_1 = require("../message");
|
|
7
|
-
const
|
|
7
|
+
const consumer_message_rate_1 = require("./consumer-message-rate");
|
|
8
8
|
const events_1 = require("../common/events");
|
|
9
9
|
const heartbeat_1 = require("./heartbeat");
|
|
10
10
|
const redis_client_1 = require("../redis-client/redis-client");
|
|
11
11
|
const path_1 = require("path");
|
|
12
12
|
const consumer_workers_1 = require("./consumer-workers");
|
|
13
13
|
const worker_runner_1 = require("../common/worker-runner");
|
|
14
|
+
const queue_manager_1 = require("../queue-manager/queue-manager");
|
|
14
15
|
class Consumer extends base_1.Base {
|
|
15
16
|
constructor() {
|
|
16
17
|
super(...arguments);
|
|
17
18
|
this.consumerRedisClient = null;
|
|
18
19
|
this.heartbeat = null;
|
|
19
|
-
this.messageRateProvider = null;
|
|
20
20
|
this.consumerWorkers = null;
|
|
21
21
|
this.consumerFrontend = null;
|
|
22
22
|
}
|
|
@@ -103,14 +103,14 @@ class Consumer extends base_1.Base {
|
|
|
103
103
|
});
|
|
104
104
|
this.on(events_1.events.MESSAGE_ACKNOWLEDGED, (msg) => {
|
|
105
105
|
this.logger.info(`Message (ID ${msg.getId()}) has been acknowledged.`);
|
|
106
|
-
if (this.
|
|
107
|
-
this.
|
|
106
|
+
if (this.messageRate)
|
|
107
|
+
this.messageRate.incrementAcknowledgedSlot();
|
|
108
108
|
this.emit(events_1.events.MESSAGE_NEXT);
|
|
109
109
|
});
|
|
110
110
|
this.on(events_1.events.MESSAGE_UNACKNOWLEDGED, (msg, cause) => {
|
|
111
111
|
this.logger.info(`Message (ID ${msg.getId()}) has been unacknowledged. Cause: ${cause}.`);
|
|
112
|
-
if (this.
|
|
113
|
-
this.
|
|
112
|
+
if (this.messageRate)
|
|
113
|
+
this.messageRate.incrementUnacknowledgedSlot();
|
|
114
114
|
this.emit(events_1.events.MESSAGE_NEXT);
|
|
115
115
|
});
|
|
116
116
|
}
|
|
@@ -124,8 +124,8 @@ class Consumer extends base_1.Base {
|
|
|
124
124
|
}
|
|
125
125
|
else {
|
|
126
126
|
this.logger.info(`Trying to consume message (ID ${message.getId()})...`);
|
|
127
|
-
if (this.
|
|
128
|
-
this.
|
|
127
|
+
if (this.messageRate)
|
|
128
|
+
this.messageRate.incrementProcessingSlot();
|
|
129
129
|
this.handleConsume(message);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -164,9 +164,18 @@ class Consumer extends base_1.Base {
|
|
|
164
164
|
cb();
|
|
165
165
|
});
|
|
166
166
|
};
|
|
167
|
+
const setUpConsumerProcessingQueue = (cb) => {
|
|
168
|
+
this.logger.debug(`Set up consumer processing queue...`);
|
|
169
|
+
this.getSharedRedisClient((client) => queue_manager_1.QueueManager.setUpProcessingQueue(this, client, cb));
|
|
170
|
+
};
|
|
167
171
|
return super
|
|
168
172
|
.goingUp()
|
|
169
|
-
.concat([
|
|
173
|
+
.concat([
|
|
174
|
+
setUpConsumerRedisClient,
|
|
175
|
+
setUpHeartbeat,
|
|
176
|
+
setUpConsumerWorkers,
|
|
177
|
+
setUpConsumerProcessingQueue,
|
|
178
|
+
]);
|
|
170
179
|
}
|
|
171
180
|
goingDown() {
|
|
172
181
|
const tearDownConsumerWorkers = (cb) => {
|
|
@@ -217,16 +226,16 @@ class Consumer extends base_1.Base {
|
|
|
217
226
|
tearDownConsumerRedisClient,
|
|
218
227
|
].concat(super.goingDown());
|
|
219
228
|
}
|
|
220
|
-
getMessageRateProvider() {
|
|
221
|
-
if (!this.messageRateProvider) {
|
|
222
|
-
this.messageRateProvider = new consumer_message_rate_provider_1.ConsumerMessageRateProvider(this);
|
|
223
|
-
}
|
|
224
|
-
return this.messageRateProvider;
|
|
225
|
-
}
|
|
226
229
|
setConsumerFrontend(consumerMessageHandler) {
|
|
227
230
|
this.consumerFrontend = consumerMessageHandler;
|
|
228
231
|
return this;
|
|
229
232
|
}
|
|
233
|
+
getMessageRate(redisClient) {
|
|
234
|
+
if (!this.messageRate) {
|
|
235
|
+
this.messageRate = new consumer_message_rate_1.ConsumerMessageRate(this, redisClient);
|
|
236
|
+
}
|
|
237
|
+
return this.messageRate;
|
|
238
|
+
}
|
|
230
239
|
}
|
|
231
240
|
exports.Consumer = Consumer;
|
|
232
241
|
//# sourceMappingURL=consumer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../../src/system/consumer/consumer.ts"],"names":[],"mappings":";;;AAAA,0CAIwB;AACxB,kCAA+B;AAC/B,wCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../../src/system/consumer/consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { ICallback
|
|
3
|
-
import { Base } from './base';
|
|
2
|
+
import { ICallback } from '../../types';
|
|
4
3
|
import { Ticker } from './common/ticker';
|
|
5
4
|
import { RedisClient } from './redis-client/redis-client';
|
|
6
5
|
import { EventEmitter } from 'events';
|
|
7
|
-
export declare class MessageRate extends EventEmitter {
|
|
8
|
-
protected instance: Base;
|
|
9
|
-
protected messageRateProvider: IMessageRateProvider;
|
|
6
|
+
export declare abstract class MessageRate<TMessageRateFields extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
|
|
10
7
|
protected redisClient: RedisClient;
|
|
11
8
|
protected ticker: Ticker;
|
|
12
|
-
constructor(
|
|
9
|
+
constructor(redisClient: RedisClient);
|
|
13
10
|
protected onTick(): void;
|
|
14
|
-
protected publish(
|
|
11
|
+
protected publish(data: string[]): void;
|
|
12
|
+
abstract getRateFields(): TMessageRateFields;
|
|
13
|
+
abstract formatRateFields(rates: TMessageRateFields): string[];
|
|
15
14
|
quit(cb: ICallback<void>): void;
|
|
16
15
|
}
|
|
@@ -4,25 +4,23 @@ exports.MessageRate = void 0;
|
|
|
4
4
|
const events_1 = require("./common/events");
|
|
5
5
|
const ticker_1 = require("./common/ticker");
|
|
6
6
|
const events_2 = require("events");
|
|
7
|
+
const redis_keys_1 = require("./common/redis-keys");
|
|
7
8
|
class MessageRate extends events_2.EventEmitter {
|
|
8
|
-
constructor(
|
|
9
|
+
constructor(redisClient) {
|
|
9
10
|
super();
|
|
10
|
-
this.instance = instance;
|
|
11
11
|
this.redisClient = redisClient;
|
|
12
|
-
this.messageRateProvider = instance.getMessageRateProvider();
|
|
13
12
|
this.ticker = new ticker_1.Ticker(() => {
|
|
14
13
|
this.onTick();
|
|
15
14
|
}, 1000);
|
|
16
15
|
this.ticker.runTimer();
|
|
17
16
|
}
|
|
18
17
|
onTick() {
|
|
19
|
-
const
|
|
20
|
-
this.publish(
|
|
18
|
+
const rates = this.getRateFields();
|
|
19
|
+
this.publish(this.formatRateFields(rates));
|
|
21
20
|
}
|
|
22
|
-
publish(
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
this.redisClient.hmset(keyIndexRates, formatted, () => void 0);
|
|
21
|
+
publish(data) {
|
|
22
|
+
const { keyIndexRates } = redis_keys_1.redisKeys.getGlobalKeys();
|
|
23
|
+
this.redisClient.hmset(keyIndexRates, data, () => void 0);
|
|
26
24
|
}
|
|
27
25
|
quit(cb) {
|
|
28
26
|
this.ticker.once(events_1.events.DOWN, cb);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-rate.js","sourceRoot":"","sources":["../../../src/system/message-rate.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"message-rate.js","sourceRoot":"","sources":["../../../src/system/message-rate.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AACzC,4CAAyC;AAEzC,mCAAsC;AACtC,oDAAgD;AAEhD,MAAsB,WAEpB,SAAQ,qBAAY;IAIpB,YAAY,WAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAES,MAAM;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAES,OAAO,CAAC,IAAc;QAC9B,MAAM,EAAE,aAAa,EAAE,GAAG,sBAAS,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAMD,IAAI,CAAC,EAAmB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF;AAjCD,kCAiCC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Producer } from './producer';
|
|
2
|
+
import { IProducerMessageRateFields } from '../../../types';
|
|
3
|
+
import { MessageRate } from '../message-rate';
|
|
4
|
+
import { RedisClient } from '../redis-client/redis-client';
|
|
5
|
+
export declare class ProducerMessageRate extends MessageRate<IProducerMessageRateFields> {
|
|
6
|
+
protected inputSlots: number[];
|
|
7
|
+
protected inputRate: number;
|
|
8
|
+
protected producer: Producer;
|
|
9
|
+
protected keyIndexRate: string;
|
|
10
|
+
protected keyProducerRateInput: string;
|
|
11
|
+
constructor(producer: Producer, redisClient: RedisClient);
|
|
12
|
+
getRateFields(): IProducerMessageRateFields;
|
|
13
|
+
formatRateFields(rates: IProducerMessageRateFields): string[];
|
|
14
|
+
incrementInputSlot(): void;
|
|
15
|
+
}
|