redis-smq 8.0.0-rc.28 → 8.0.0-rc.29
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 +25 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +48 -13
- package/dist/cjs/src/common/redis-client/redis-client.d.ts +11 -0
- package/dist/cjs/src/common/redis-client/{redis-client-instance.js → redis-client.js} +25 -13
- package/dist/cjs/src/common/redis-client/scripts/scripts.d.ts +2 -0
- package/dist/cjs/src/common/redis-client/scripts/scripts.js +22 -63
- package/dist/cjs/src/lib/consumer/consumer/consumer.d.ts +4 -2
- package/dist/cjs/src/lib/consumer/consumer/consumer.js +12 -8
- package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/consumer/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +4 -3
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js +7 -13
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/consumer-heartbeat/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/message-handler/consume-message/consume-message.d.ts +5 -3
- package/dist/cjs/src/lib/consumer/message-handler/consume-message/consume-message.js +5 -5
- package/dist/cjs/src/lib/consumer/message-handler/consume-message/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/message-handler/consume-message/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/message-handler/dequeue-message/dequeue-message.d.ts +6 -4
- package/dist/cjs/src/lib/consumer/message-handler/dequeue-message/dequeue-message.js +24 -22
- package/dist/cjs/src/lib/consumer/message-handler/dequeue-message/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/message-handler/dequeue-message/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/even-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +5 -3
- package/dist/cjs/src/lib/consumer/message-handler/message-handler/message-handler.js +8 -8
- package/dist/cjs/src/lib/consumer/message-handler/multiplexed-message-handler.d.ts +3 -1
- package/dist/cjs/src/lib/consumer/message-handler/multiplexed-message-handler.js +3 -3
- package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +5 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/message-handler-runner.js +8 -7
- package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +3 -1
- package/dist/cjs/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.js +3 -3
- package/dist/cjs/src/lib/consumer/workers/worker.d.ts +2 -2
- package/dist/cjs/src/lib/consumer/workers/worker.js +2 -2
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts +4 -4
- package/dist/cjs/src/lib/consumer-groups/consumer-groups.js +3 -3
- package/dist/{esm/src/lib/event-bus/event-bus-redis-instance.d.ts → cjs/src/lib/event-bus/event-bus.d.ts} +2 -2
- package/dist/cjs/src/lib/event-bus/{event-bus-redis-instance.js → event-bus.js} +4 -4
- package/dist/cjs/src/lib/event-bus/index.d.ts +1 -1
- package/dist/cjs/src/lib/event-bus/index.js +1 -1
- package/dist/cjs/src/lib/exchange/exchange-abstract.d.ts +2 -2
- package/dist/cjs/src/lib/exchange/exchange-abstract.js +2 -2
- package/dist/cjs/src/lib/message/message.d.ts +2 -2
- package/dist/cjs/src/lib/message/message.js +2 -2
- package/dist/cjs/src/lib/namespace/namespace.d.ts +2 -2
- package/dist/cjs/src/lib/namespace/namespace.js +2 -2
- package/dist/cjs/src/lib/producer/event-bus-publisher.d.ts +2 -1
- package/dist/cjs/src/lib/producer/event-bus-publisher.js +1 -3
- package/dist/cjs/src/lib/producer/producer.d.ts +4 -2
- package/dist/cjs/src/lib/producer/producer.js +31 -29
- package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.d.ts +6 -3
- package/dist/cjs/src/lib/producer/queue-consumer-groups-cache.js +4 -6
- package/dist/cjs/src/lib/queue/queue.d.ts +4 -4
- package/dist/cjs/src/lib/queue/queue.js +3 -3
- package/dist/cjs/src/lib/queue-messages/queue-messages-paginator/queue-messages-paginator-abstract.d.ts +2 -2
- package/dist/cjs/src/lib/queue-messages/queue-messages-paginator/queue-messages-paginator-abstract.js +2 -2
- package/dist/cjs/src/lib/queue-messages/queue-pending-messages/queue-pending-messages.d.ts +2 -2
- package/dist/cjs/src/lib/queue-messages/queue-pending-messages/queue-pending-messages.js +2 -2
- package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.d.ts +2 -2
- package/dist/cjs/src/lib/queue-rate-limit/queue-rate-limit.js +2 -2
- package/dist/esm/src/common/redis-client/redis-client.d.ts +11 -0
- package/dist/esm/src/common/redis-client/{redis-client-instance.js → redis-client.js} +23 -11
- package/dist/esm/src/common/redis-client/scripts/scripts.d.ts +2 -0
- package/dist/esm/src/common/redis-client/scripts/scripts.js +21 -40
- package/dist/esm/src/lib/consumer/consumer/consumer.d.ts +4 -2
- package/dist/esm/src/lib/consumer/consumer/consumer.js +11 -9
- package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/consumer/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.d.ts +4 -3
- package/dist/esm/src/lib/consumer/consumer-heartbeat/consumer-heartbeat.js +8 -15
- package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/consumer-heartbeat/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/message-handler/consume-message/consume-message.d.ts +5 -3
- package/dist/esm/src/lib/consumer/message-handler/consume-message/consume-message.js +5 -5
- package/dist/esm/src/lib/consumer/message-handler/consume-message/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/message-handler/consume-message/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/message-handler/dequeue-message/dequeue-message.d.ts +6 -4
- package/dist/esm/src/lib/consumer/message-handler/dequeue-message/dequeue-message.js +17 -15
- package/dist/esm/src/lib/consumer/message-handler/dequeue-message/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/message-handler/dequeue-message/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/message-handler/message-handler/even-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/message-handler/message-handler/message-handler.d.ts +5 -3
- package/dist/esm/src/lib/consumer/message-handler/message-handler/message-handler.js +9 -8
- package/dist/esm/src/lib/consumer/message-handler/multiplexed-message-handler.d.ts +3 -1
- package/dist/esm/src/lib/consumer/message-handler/multiplexed-message-handler.js +3 -3
- package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.d.ts +5 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/message-handler-runner.js +8 -5
- package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.d.ts +3 -1
- package/dist/esm/src/lib/consumer/message-handler-runner/multiplexed-message-handler-runner.js +3 -3
- package/dist/esm/src/lib/consumer/workers/worker.d.ts +2 -2
- package/dist/esm/src/lib/consumer/workers/worker.js +2 -2
- package/dist/esm/src/lib/consumer-groups/consumer-groups.d.ts +4 -4
- package/dist/esm/src/lib/consumer-groups/consumer-groups.js +4 -4
- package/dist/{cjs/src/lib/event-bus/event-bus-redis-instance.d.ts → esm/src/lib/event-bus/event-bus.d.ts} +2 -2
- package/dist/esm/src/lib/event-bus/{event-bus-redis-instance.js → event-bus.js} +2 -2
- package/dist/esm/src/lib/event-bus/index.d.ts +1 -1
- package/dist/esm/src/lib/event-bus/index.js +1 -1
- package/dist/esm/src/lib/exchange/exchange-abstract.d.ts +2 -2
- package/dist/esm/src/lib/exchange/exchange-abstract.js +2 -2
- package/dist/esm/src/lib/message/message.d.ts +2 -2
- package/dist/esm/src/lib/message/message.js +2 -2
- package/dist/esm/src/lib/namespace/namespace.d.ts +2 -2
- package/dist/esm/src/lib/namespace/namespace.js +2 -2
- package/dist/esm/src/lib/producer/event-bus-publisher.d.ts +2 -1
- package/dist/esm/src/lib/producer/event-bus-publisher.js +1 -3
- package/dist/esm/src/lib/producer/producer.d.ts +4 -2
- package/dist/esm/src/lib/producer/producer.js +8 -6
- package/dist/esm/src/lib/producer/queue-consumer-groups-cache.d.ts +6 -3
- package/dist/esm/src/lib/producer/queue-consumer-groups-cache.js +4 -6
- package/dist/esm/src/lib/queue/queue.d.ts +4 -4
- package/dist/esm/src/lib/queue/queue.js +4 -4
- package/dist/esm/src/lib/queue-messages/queue-messages-paginator/queue-messages-paginator-abstract.d.ts +2 -2
- package/dist/esm/src/lib/queue-messages/queue-messages-paginator/queue-messages-paginator-abstract.js +2 -2
- package/dist/esm/src/lib/queue-messages/queue-pending-messages/queue-pending-messages.d.ts +2 -2
- package/dist/esm/src/lib/queue-messages/queue-pending-messages/queue-pending-messages.js +2 -2
- package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.d.ts +2 -2
- package/dist/esm/src/lib/queue-rate-limit/queue-rate-limit.js +2 -2
- package/package.json +4 -2
- package/dist/cjs/src/common/redis-client/redis-client-factory.d.ts +0 -4
- package/dist/cjs/src/common/redis-client/redis-client-factory.js +0 -15
- package/dist/cjs/src/common/redis-client/redis-client-instance.d.ts +0 -10
- package/dist/cjs/src/lib/event-bus/event-bus-redis-factory.d.ts +0 -4
- package/dist/cjs/src/lib/event-bus/event-bus-redis-factory.js +0 -15
- package/dist/esm/src/common/redis-client/redis-client-factory.d.ts +0 -4
- package/dist/esm/src/common/redis-client/redis-client-factory.js +0 -11
- package/dist/esm/src/common/redis-client/redis-client-instance.d.ts +0 -10
- package/dist/esm/src/lib/event-bus/event-bus-redis-factory.d.ts +0 -4
- package/dist/esm/src/lib/event-bus/event-bus-redis-factory.js +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [8.0.0-rc.29](https://github.com/weyoss/redis-smq/compare/v8.0.0-rc.28...v8.0.0-rc.29) (2025-02-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **deps:** regenerate package-lock.json ([dc55c81](https://github.com/weyoss/redis-smq/commit/dc55c8101e9b57d2607ee47a78db7861d17623ab))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Documentation
|
|
12
|
+
|
|
13
|
+
* **api:** update API documentation and references ([08f85ae](https://github.com/weyoss/redis-smq/commit/08f85ae0c963497d4200fcdfdeccc4aa83d3e60b))
|
|
14
|
+
* **contributing:** update guidelines and improve language ([c2feb57](https://github.com/weyoss/redis-smq/commit/c2feb57429513abb4b8973fc0bb6000377712f2c))
|
|
15
|
+
* **README:** update installation and usage instructions ([cfe19e4](https://github.com/weyoss/redis-smq/commit/cfe19e4f88cf5a5059ecb8567f1cbc16524008de))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Codebase Refactoring
|
|
19
|
+
|
|
20
|
+
* remove unnecessary factory patterns ([3ed3a7d](https://github.com/weyoss/redis-smq/commit/3ed3a7d8056fae3c253f8af5b6b5f3f0d591945f))
|
|
21
|
+
* **tests:** update imports and usage of EventBus and RedisClient ([f9dca11](https://github.com/weyoss/redis-smq/commit/f9dca11015e3d02fddccc8f442facb2bf008236a))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Misc
|
|
25
|
+
|
|
26
|
+
* **deps:** update redis-smq-common to 3.0.0-rc.17 ([324d6f1](https://github.com/weyoss/redis-smq/commit/324d6f12fc82da8762f442c110a9351cce3c3505))
|
|
27
|
+
|
|
3
28
|
## [8.0.0-rc.28](https://github.com/weyoss/redis-smq/compare/v8.0.0-rc.27...v8.0.0-rc.28) (2025-02-05)
|
|
4
29
|
|
|
5
30
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Contributions
|
|
2
2
|
|
|
3
|
-
If you want to make
|
|
3
|
+
If you want to make RedisSMQ project better, your contributions are very welcome!
|
|
4
4
|
|
|
5
5
|
## Pull requests
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ coding style. You can check the status of your coding style by simply running `n
|
|
|
12
12
|
Cover your code with new tests if needed. Only fully tested changes are accepted.
|
|
13
13
|
|
|
14
14
|
Each time when you are ready to submit your changes don't forget to run `npm test` to check that your code is complying
|
|
15
|
-
with eslint project rules and that all
|
|
15
|
+
with eslint project rules and that all the tests are successfully completed.
|
|
16
16
|
|
|
17
17
|
## Bugs
|
|
18
18
|
|
package/README.md
CHANGED
|
@@ -10,17 +10,17 @@ A High-Performance Redis Simple Message Queue for Node.js
|
|
|
10
10
|
|
|
11
11
|
**Key Features**
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
- 🚀 [High-performance message processing](docs/performance.md)
|
|
14
|
+
- 🔄 [Flexible producer/consumer model with multi-queue producers and consumers](docs/consuming-messages.md)
|
|
15
|
+
- 🔀 [Different exchange types (Direct, Topic, FanOut) for publishing messages to one or multiple queues](docs/message-exchanges.md)
|
|
16
|
+
- 📬 [Two delivery models (Point-2-Point and Pub/Sub)](docs/queue-delivery-models.md) with reliable delivery and configurable retry modes
|
|
17
|
+
- 📊 [Three queuing strategies (FIFO, LIFO, Priority Queues)](docs/queues.md)
|
|
18
|
+
- 🧵 [Message handler worker threads for sandboxing and performance improvement](docs/message-handler-worker-threads.md)
|
|
19
|
+
- ⏱️ [Message expiration and consumption timeout](docs/messages.md)
|
|
20
|
+
- 🚦 [Queue rate limiting for controlling message consumption rates](docs/queue-rate-limiting.md)
|
|
21
|
+
- 🕰️ [Built-in scheduler for delayed message delivery and repeating messages](docs/scheduling-messages.md)
|
|
22
|
+
- 🌐 [RESTful API](docs/redis-smq-rest-api.md) and [Web UI](docs/redis-smq-web-ui.md) for interacting with the message queue
|
|
23
|
+
- 📦 [Support for ESM and CJS modules](docs/esm-cjs-modules.md)
|
|
24
24
|
|
|
25
25
|
**Use Cases**
|
|
26
26
|
|
|
@@ -29,13 +29,48 @@ A High-Performance Redis Simple Message Queue for Node.js
|
|
|
29
29
|
- Communication between multiple services in microservices architectures.
|
|
30
30
|
- Handling real-time events in gaming, IoT, or analytics systems.
|
|
31
31
|
|
|
32
|
-
**Installation
|
|
32
|
+
**Installation**
|
|
33
33
|
|
|
34
34
|
To get started with RedisSMQ, you can install the library using npm:
|
|
35
35
|
```bash
|
|
36
36
|
npm i redis-smq@rc
|
|
37
37
|
```
|
|
38
|
-
|
|
38
|
+
|
|
39
|
+
Don't forget to install a Redis client. Choose either node-redis or ioredis:
|
|
40
|
+
|
|
41
|
+
```shell
|
|
42
|
+
npm install @redis/client
|
|
43
|
+
# or
|
|
44
|
+
npm install ioredis
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Configuration**
|
|
48
|
+
|
|
49
|
+
Set up the RedisSMQ configuration during your application bootstrap:
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
'use strict';
|
|
53
|
+
const { Configuration, ERedisConfigClient } = require('redis-smq');
|
|
54
|
+
|
|
55
|
+
const config = {
|
|
56
|
+
redis: {
|
|
57
|
+
// Using ioredis as the Redis client
|
|
58
|
+
client: ERedisConfigClient.IOREDIS,
|
|
59
|
+
// Add any other ioredis options here
|
|
60
|
+
options: {
|
|
61
|
+
host: '127.0.0.1',
|
|
62
|
+
port: 6379,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
Configuration.getSetConfig(config);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Usage**
|
|
71
|
+
|
|
72
|
+
Here's a basic example to create a queue, produce a message, and consume it:
|
|
73
|
+
|
|
39
74
|
```javascript
|
|
40
75
|
// Creating a queue
|
|
41
76
|
const queue = new Queue();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter, ICallback, IRedisClient, IRedisConfig, TRedisClientEvent } from 'redis-smq-common';
|
|
2
|
+
export declare class RedisClient extends EventEmitter<Pick<TRedisClientEvent, 'error'>> {
|
|
3
|
+
protected instance: IRedisClient | null;
|
|
4
|
+
protected locked: boolean;
|
|
5
|
+
protected createClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
|
|
6
|
+
init: (cb: ICallback<void>) => void;
|
|
7
|
+
getSetInstance: (cb: ICallback<IRedisClient>) => void;
|
|
8
|
+
shutdown: (cb: ICallback<void>) => void;
|
|
9
|
+
getInstance(): IRedisClient | Error;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=redis-client.d.ts.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.RedisClient = void 0;
|
|
4
4
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
5
5
|
const index_js_1 = require("../../config/index.js");
|
|
6
6
|
const redis_client_instance_lock_error_js_1 = require("./errors/redis-client-instance-lock.error.js");
|
|
7
|
-
|
|
7
|
+
const scripts_js_1 = require("./scripts/scripts.js");
|
|
8
|
+
class RedisClient extends redis_smq_common_1.EventEmitter {
|
|
8
9
|
constructor() {
|
|
9
10
|
super(...arguments);
|
|
10
11
|
this.instance = null;
|
|
@@ -16,17 +17,15 @@ class RedisClientInstance extends redis_smq_common_1.EventEmitter {
|
|
|
16
17
|
if (!this.locked) {
|
|
17
18
|
if (!this.instance) {
|
|
18
19
|
this.locked = true;
|
|
19
|
-
|
|
20
|
+
this.createClient(index_js_1.Configuration.getSetConfig().redis, (err, client) => {
|
|
20
21
|
this.locked = false;
|
|
21
22
|
if (err)
|
|
22
|
-
cb(err);
|
|
23
|
-
|
|
24
|
-
cb(new redis_smq_common_1.CallbackEmptyReplyError());
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
cb(null, this.instance);
|
|
29
|
-
}
|
|
23
|
+
return cb(err);
|
|
24
|
+
if (!client)
|
|
25
|
+
return cb(new redis_smq_common_1.CallbackEmptyReplyError());
|
|
26
|
+
this.instance = client;
|
|
27
|
+
this.instance.on('error', (err) => this.emit('error', err));
|
|
28
|
+
cb(null, this.instance);
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
31
|
else
|
|
@@ -46,11 +45,24 @@ class RedisClientInstance extends redis_smq_common_1.EventEmitter {
|
|
|
46
45
|
cb();
|
|
47
46
|
};
|
|
48
47
|
}
|
|
48
|
+
createClient(config, cb) {
|
|
49
|
+
(0, redis_smq_common_1.createRedisClient)(config, (err, client) => {
|
|
50
|
+
if (err)
|
|
51
|
+
return cb(err);
|
|
52
|
+
if (!client)
|
|
53
|
+
return cb(new redis_smq_common_1.CallbackEmptyReplyError());
|
|
54
|
+
(0, scripts_js_1.loadScriptFiles)(client, (err) => {
|
|
55
|
+
if (err)
|
|
56
|
+
return cb(err);
|
|
57
|
+
cb(null, client);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
49
61
|
getInstance() {
|
|
50
62
|
if (!this.instance)
|
|
51
63
|
return new redis_smq_common_1.PanicError(`Use first getSetInstance() to initialize the RedisClientInstance class`);
|
|
52
64
|
return this.instance;
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
|
-
exports.
|
|
56
|
-
//# sourceMappingURL=redis-client
|
|
67
|
+
exports.RedisClient = RedisClient;
|
|
68
|
+
//# sourceMappingURL=redis-client.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ICallback, IRedisClient } from 'redis-smq-common';
|
|
1
2
|
export declare enum ELuaScriptName {
|
|
2
3
|
PUBLISH_SCHEDULED_MESSAGE = "PUBLISH_SCHEDULED_MESSAGE",
|
|
3
4
|
PUBLISH_MESSAGE = "PUBLISH_MESSAGE",
|
|
@@ -14,4 +15,5 @@ export declare enum ELuaScriptName {
|
|
|
14
15
|
CLEANUP_OFFLINE_CONSUMER = "CLEANUP_OFFLINE_CONSUMER",
|
|
15
16
|
SET_QUEUE_RATE_LIMIT = "SET_QUEUE_RATE_LIMIT"
|
|
16
17
|
}
|
|
18
|
+
export declare function loadScriptFiles(redisClient: IRedisClient, cb: ICallback<void>): void;
|
|
17
19
|
//# sourceMappingURL=scripts.d.ts.map
|
|
@@ -1,30 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ELuaScriptName = void 0;
|
|
27
|
-
const fs = __importStar(require("fs"));
|
|
3
|
+
exports.loadScriptFiles = exports.ELuaScriptName = void 0;
|
|
28
4
|
const path_1 = require("path");
|
|
29
5
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
30
6
|
var ELuaScriptName;
|
|
@@ -44,42 +20,25 @@ var ELuaScriptName;
|
|
|
44
20
|
ELuaScriptName["CLEANUP_OFFLINE_CONSUMER"] = "CLEANUP_OFFLINE_CONSUMER";
|
|
45
21
|
ELuaScriptName["SET_QUEUE_RATE_LIMIT"] = "SET_QUEUE_RATE_LIMIT";
|
|
46
22
|
})(ELuaScriptName = exports.ELuaScriptName || (exports.ELuaScriptName = {}));
|
|
47
|
-
redis_smq_common_1.
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
.
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
.
|
|
55
|
-
.
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
.
|
|
59
|
-
|
|
60
|
-
.
|
|
61
|
-
.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.toString());
|
|
69
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.ACKNOWLEDGE_MESSAGE, fs
|
|
70
|
-
.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/acknowledge-message.lua'))
|
|
71
|
-
.toString());
|
|
72
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.DELETE_MESSAGE, fs.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/delete-message.lua')).toString());
|
|
73
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.FETCH_MESSAGE_FOR_PROCESSING, fs
|
|
74
|
-
.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/fetch-message-for-processing.lua'))
|
|
75
|
-
.toString());
|
|
76
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.DELETE_CONSUMER_GROUP, fs
|
|
77
|
-
.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/delete-consumer-group.lua'))
|
|
78
|
-
.toString());
|
|
79
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.CLEANUP_OFFLINE_CONSUMER, fs
|
|
80
|
-
.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/cleanup-offline-consumer.lua'))
|
|
81
|
-
.toString());
|
|
82
|
-
redis_smq_common_1.RedisClientAbstract.addScript(ELuaScriptName.SET_QUEUE_RATE_LIMIT, fs
|
|
83
|
-
.readFileSync((0, path_1.resolve)((0, redis_smq_common_1.getDirname)(), './lua/set-queue-rate-limit.lua'))
|
|
84
|
-
.toString());
|
|
23
|
+
const dirname = (0, redis_smq_common_1.getDirname)();
|
|
24
|
+
const scriptFileMap = {
|
|
25
|
+
[ELuaScriptName.PUBLISH_SCHEDULED_MESSAGE]: (0, path_1.resolve)(dirname, './lua/publish-scheduled-message.lua'),
|
|
26
|
+
[ELuaScriptName.PUBLISH_MESSAGE]: (0, path_1.resolve)(dirname, './lua/publish-message.lua'),
|
|
27
|
+
[ELuaScriptName.REQUEUE_MESSAGE]: (0, path_1.resolve)(dirname, './lua/requeue-message.lua'),
|
|
28
|
+
[ELuaScriptName.SCHEDULE_MESSAGE]: (0, path_1.resolve)(dirname, './lua/schedule-message.lua'),
|
|
29
|
+
[ELuaScriptName.HAS_QUEUE_RATE_EXCEEDED]: (0, path_1.resolve)(dirname, './lua/has-queue-rate-exceeded.lua'),
|
|
30
|
+
[ELuaScriptName.CREATE_QUEUE]: (0, path_1.resolve)(dirname, './lua/create-queue.lua'),
|
|
31
|
+
[ELuaScriptName.INIT_CONSUMER_QUEUE]: (0, path_1.resolve)(dirname, './lua/init-consumer-queue.lua'),
|
|
32
|
+
[ELuaScriptName.HANDLE_PROCESSING_QUEUE]: (0, path_1.resolve)(dirname, './lua/handle-processing-queue.lua'),
|
|
33
|
+
[ELuaScriptName.ACKNOWLEDGE_MESSAGE]: (0, path_1.resolve)(dirname, './lua/acknowledge-message.lua'),
|
|
34
|
+
[ELuaScriptName.DELETE_MESSAGE]: (0, path_1.resolve)(dirname, './lua/delete-message.lua'),
|
|
35
|
+
[ELuaScriptName.FETCH_MESSAGE_FOR_PROCESSING]: (0, path_1.resolve)(dirname, './lua/fetch-message-for-processing.lua'),
|
|
36
|
+
[ELuaScriptName.DELETE_CONSUMER_GROUP]: (0, path_1.resolve)(dirname, './lua/delete-consumer-group.lua'),
|
|
37
|
+
[ELuaScriptName.CLEANUP_OFFLINE_CONSUMER]: (0, path_1.resolve)(dirname, './lua/cleanup-offline-consumer.lua'),
|
|
38
|
+
[ELuaScriptName.SET_QUEUE_RATE_LIMIT]: (0, path_1.resolve)(dirname, './lua/set-queue-rate-limit.lua'),
|
|
39
|
+
};
|
|
40
|
+
function loadScriptFiles(redisClient, cb) {
|
|
41
|
+
redisClient.loadScriptFiles(scriptFileMap, (err) => cb(err));
|
|
42
|
+
}
|
|
43
|
+
exports.loadScriptFiles = loadScriptFiles;
|
|
85
44
|
//# sourceMappingURL=scripts.js.map
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ICallback, ILogger, Runnable, TRedisClientEvent, TUnaryFunction } from 'redis-smq-common';
|
|
2
2
|
import { TConsumerEvent } from '../../../common/index.js';
|
|
3
|
+
import { RedisClient } from '../../../common/redis-client/redis-client.js';
|
|
4
|
+
import { EventBus } from '../../event-bus/index.js';
|
|
3
5
|
import { IQueueParsedParams, TQueueExtendedParams } from '../../queue/index.js';
|
|
4
6
|
import { ConsumerHeartbeat } from '../consumer-heartbeat/consumer-heartbeat.js';
|
|
5
7
|
import { MessageHandlerRunner } from '../message-handler-runner/message-handler-runner.js';
|
|
@@ -7,8 +9,8 @@ import { TConsumerMessageHandler } from '../types/index.js';
|
|
|
7
9
|
export declare class Consumer extends Runnable<TConsumerEvent> {
|
|
8
10
|
protected messageHandlerRunner: MessageHandlerRunner;
|
|
9
11
|
protected logger: ILogger;
|
|
10
|
-
protected redisClient:
|
|
11
|
-
protected eventBus:
|
|
12
|
+
protected redisClient: RedisClient;
|
|
13
|
+
protected eventBus: EventBus | null;
|
|
12
14
|
protected heartbeat: ConsumerHeartbeat | null;
|
|
13
15
|
constructor(enableMultiplexing?: boolean);
|
|
14
16
|
protected onRedisError: TRedisClientEvent['error'];
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Consumer = void 0;
|
|
4
4
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
5
|
-
const
|
|
5
|
+
const redis_client_js_1 = require("../../../common/redis-client/redis-client.js");
|
|
6
6
|
const index_js_1 = require("../../../config/index.js");
|
|
7
|
-
const
|
|
7
|
+
const index_js_2 = require("../../event-bus/index.js");
|
|
8
8
|
const _parse_queue_extended_params_js_1 = require("../../queue/_/_parse-queue-extended-params.js");
|
|
9
9
|
const consumer_heartbeat_js_1 = require("../consumer-heartbeat/consumer-heartbeat.js");
|
|
10
10
|
const message_handler_runner_js_1 = require("../message-handler-runner/message-handler-runner.js");
|
|
@@ -13,12 +13,14 @@ const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
|
|
|
13
13
|
class Consumer extends redis_smq_common_1.Runnable {
|
|
14
14
|
constructor(enableMultiplexing) {
|
|
15
15
|
super();
|
|
16
|
+
this.eventBus = null;
|
|
16
17
|
this.heartbeat = null;
|
|
17
18
|
this.onRedisError = (error) => {
|
|
18
19
|
this.handleError(error);
|
|
19
20
|
};
|
|
20
21
|
this.setUpHeartbeat = (cb) => {
|
|
21
|
-
|
|
22
|
+
var _a;
|
|
23
|
+
this.heartbeat = new consumer_heartbeat_js_1.ConsumerHeartbeat(this, this.redisClient, this.logger, (_a = this.eventBus) !== null && _a !== void 0 ? _a : null);
|
|
22
24
|
this.heartbeat.on('consumerHeartbeat.error', (err) => this.handleError(err));
|
|
23
25
|
this.heartbeat.run((err) => cb(err));
|
|
24
26
|
};
|
|
@@ -55,14 +57,16 @@ class Consumer extends redis_smq_common_1.Runnable {
|
|
|
55
57
|
};
|
|
56
58
|
const config = index_js_1.Configuration.getSetConfig();
|
|
57
59
|
this.logger = redis_smq_common_1.logger.getLogger(config.logger, `consumer:${this.id}:message-handler`);
|
|
58
|
-
this.redisClient =
|
|
60
|
+
this.redisClient = new redis_client_js_1.RedisClient();
|
|
61
|
+
this.redisClient.on('error', this.onRedisError);
|
|
59
62
|
if (index_js_1.Configuration.getSetConfig().eventBus.enabled) {
|
|
60
|
-
this.eventBus =
|
|
61
|
-
|
|
63
|
+
this.eventBus = new index_js_2.EventBus();
|
|
64
|
+
this.eventBus.on('error', this.onRedisError);
|
|
65
|
+
(0, event_bus_publisher_js_1.eventBusPublisher)(this, this.eventBus, this.logger);
|
|
62
66
|
}
|
|
63
67
|
this.messageHandlerRunner = enableMultiplexing
|
|
64
|
-
? new multiplexed_message_handler_runner_js_1.MultiplexedMessageHandlerRunner(this, this.logger)
|
|
65
|
-
: new message_handler_runner_js_1.MessageHandlerRunner(this, this.logger);
|
|
68
|
+
? new multiplexed_message_handler_runner_js_1.MultiplexedMessageHandlerRunner(this, this.redisClient, this.logger, this.eventBus)
|
|
69
|
+
: new message_handler_runner_js_1.MessageHandlerRunner(this, this.redisClient, this.logger, this.eventBus);
|
|
66
70
|
this.messageHandlerRunner.on('consumer.messageHandlerRunner.error', (err) => this.handleError(err));
|
|
67
71
|
}
|
|
68
72
|
goingUp() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ILogger } from 'redis-smq-common';
|
|
2
|
+
import { EventBus } from '../../event-bus/index.js';
|
|
2
3
|
import { Consumer } from './consumer.js';
|
|
3
|
-
export declare function eventBusPublisher(consumer: Consumer, logger: ILogger): void;
|
|
4
|
+
export declare function eventBusPublisher(consumer: Consumer, eventBus: EventBus, logger: ILogger): void;
|
|
4
5
|
//# sourceMappingURL=event-bus-publisher.d.ts.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.eventBusPublisher = void 0;
|
|
4
|
-
|
|
5
|
-
function eventBusPublisher(consumer, logger) {
|
|
6
|
-
const eventBus = (0, event_bus_redis_factory_js_1.EventBusRedisFactory)(consumer.getId(), () => void 0);
|
|
4
|
+
function eventBusPublisher(consumer, eventBus, logger) {
|
|
7
5
|
const up = (...args) => {
|
|
8
6
|
const instance = eventBus.getInstance();
|
|
9
7
|
if (instance instanceof Error)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ICallback, ILogger, IRedisClient, Runnable, Timer } from 'redis-smq-common';
|
|
2
2
|
import { TConsumerHeartbeatEvent } from '../../../common/index.js';
|
|
3
|
+
import { RedisClient } from '../../../common/redis-client/redis-client.js';
|
|
4
|
+
import { EventBus } from '../../event-bus/index.js';
|
|
3
5
|
import { Consumer } from '../consumer/consumer.js';
|
|
4
6
|
import { IConsumerHeartbeat } from '../types/index.js';
|
|
5
7
|
export declare class ConsumerHeartbeat extends Runnable<TConsumerHeartbeatEvent> {
|
|
@@ -8,9 +10,8 @@ export declare class ConsumerHeartbeat extends Runnable<TConsumerHeartbeatEvent>
|
|
|
8
10
|
protected keyConsumerHeartbeat: string;
|
|
9
11
|
protected consumer: Consumer;
|
|
10
12
|
protected logger: ILogger;
|
|
11
|
-
protected redisClient:
|
|
12
|
-
|
|
13
|
-
constructor(consumer: Consumer, logger: ILogger);
|
|
13
|
+
protected redisClient: RedisClient;
|
|
14
|
+
constructor(consumer: Consumer, redisClient: RedisClient, logger: ILogger, eventBus: EventBus | null);
|
|
14
15
|
protected getLogger(): ILogger;
|
|
15
16
|
protected getPayload(): IConsumerHeartbeat;
|
|
16
17
|
protected beat(): void;
|
|
@@ -26,10 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.ConsumerHeartbeat = void 0;
|
|
27
27
|
const os = __importStar(require("os"));
|
|
28
28
|
const redis_smq_common_1 = require("redis-smq-common");
|
|
29
|
-
const redis_client_factory_js_1 = require("../../../common/redis-client/redis-client-factory.js");
|
|
30
29
|
const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
|
|
31
|
-
const index_js_1 = require("../../../config/index.js");
|
|
32
|
-
const event_bus_redis_factory_js_1 = require("../../event-bus/event-bus-redis-factory.js");
|
|
33
30
|
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
|
|
34
31
|
const cpuUsageStatsRef = {
|
|
35
32
|
cpuUsage: process.cpuUsage(),
|
|
@@ -53,14 +50,13 @@ function cpuUsage() {
|
|
|
53
50
|
100).toFixed(1) }, cpuUsageDiff);
|
|
54
51
|
}
|
|
55
52
|
class ConsumerHeartbeat extends redis_smq_common_1.Runnable {
|
|
56
|
-
constructor(consumer, logger) {
|
|
53
|
+
constructor(consumer, redisClient, logger, eventBus) {
|
|
57
54
|
super();
|
|
58
55
|
this.consumer = consumer;
|
|
59
56
|
this.logger = logger;
|
|
60
|
-
this.redisClient =
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
(0, event_bus_publisher_js_1.eventBusPublisher)(this, this.consumer.getId(), this.logger);
|
|
57
|
+
this.redisClient = redisClient;
|
|
58
|
+
if (eventBus) {
|
|
59
|
+
(0, event_bus_publisher_js_1.eventBusPublisher)(this, eventBus, this.logger);
|
|
64
60
|
}
|
|
65
61
|
const { keyConsumerHeartbeat } = redis_keys_js_1.redisKeys.getConsumerKeys(consumer.getId());
|
|
66
62
|
this.keyConsumerHeartbeat = keyConsumerHeartbeat;
|
|
@@ -136,11 +132,9 @@ class ConsumerHeartbeat extends redis_smq_common_1.Runnable {
|
|
|
136
132
|
(cb) => {
|
|
137
133
|
this.timer.reset();
|
|
138
134
|
const redisClient = this.redisClient.getInstance();
|
|
139
|
-
if (redisClient instanceof
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
else
|
|
143
|
-
cb();
|
|
135
|
+
if (redisClient instanceof Error)
|
|
136
|
+
return cb();
|
|
137
|
+
redisClient.del(this.keyConsumerHeartbeat, () => cb());
|
|
144
138
|
},
|
|
145
139
|
].concat(super.goingDown());
|
|
146
140
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ILogger } from 'redis-smq-common';
|
|
2
|
+
import { EventBus } from '../../event-bus/index.js';
|
|
2
3
|
import { ConsumerHeartbeat } from './consumer-heartbeat.js';
|
|
3
|
-
export declare function eventBusPublisher(consumerHeartbeat: ConsumerHeartbeat,
|
|
4
|
+
export declare function eventBusPublisher(consumerHeartbeat: ConsumerHeartbeat, eventBus: EventBus, logger: ILogger): void;
|
|
4
5
|
//# sourceMappingURL=event-bus-publisher.d.ts.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.eventBusPublisher = void 0;
|
|
4
|
-
|
|
5
|
-
function eventBusPublisher(consumerHeartbeat, consumerId, logger) {
|
|
6
|
-
const eventBus = (0, event_bus_redis_factory_js_1.EventBusRedisFactory)(consumerId, () => void 0);
|
|
4
|
+
function eventBusPublisher(consumerHeartbeat, eventBus, logger) {
|
|
7
5
|
const onConsumerHeartbeat = (...args) => {
|
|
8
6
|
const instance = eventBus.getInstance();
|
|
9
7
|
if (instance instanceof Error)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ICallback, ILogger, Runnable, WorkerCallable } from 'redis-smq-common';
|
|
2
2
|
import { TConsumerConsumeMessageEvent } from '../../../../common/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RedisClient } from '../../../../common/redis-client/redis-client.js';
|
|
4
|
+
import { EventBus } from '../../../event-bus/index.js';
|
|
4
5
|
import { IMessageTransferable } from '../../../message/index.js';
|
|
5
6
|
import { MessageEnvelope } from '../../../message/message-envelope.js';
|
|
6
7
|
import { IQueueParsedParams } from '../../../queue/index.js';
|
|
8
|
+
import { Consumer } from '../../consumer/consumer.js';
|
|
7
9
|
import { EMessageUnknowledgmentReason, TConsumerMessageHandler } from '../../types/index.js';
|
|
8
10
|
export declare class ConsumeMessage extends Runnable<TConsumerConsumeMessageEvent> {
|
|
9
11
|
protected logger: ILogger;
|
|
@@ -13,9 +15,9 @@ export declare class ConsumeMessage extends Runnable<TConsumerConsumeMessageEven
|
|
|
13
15
|
protected consumerId: string;
|
|
14
16
|
protected messageHandler: TConsumerMessageHandler;
|
|
15
17
|
protected messageHandlerId: string;
|
|
16
|
-
protected redisClient:
|
|
18
|
+
protected redisClient: RedisClient;
|
|
17
19
|
protected consumeMessageWorker: WorkerCallable<IMessageTransferable, void> | null;
|
|
18
|
-
constructor(redisClient:
|
|
20
|
+
constructor(redisClient: RedisClient, consumer: Consumer, queue: IQueueParsedParams, messageHandlerId: string, messageHandler: TConsumerMessageHandler, logger: ILogger, eventBus: EventBus | null);
|
|
19
21
|
protected getLogger(): ILogger;
|
|
20
22
|
protected acknowledgeMessage(message: MessageEnvelope): void;
|
|
21
23
|
protected unacknowledgeMessage(msg: MessageEnvelope, unknowledgmentReason: EMessageUnknowledgmentReason): void;
|
|
@@ -16,7 +16,7 @@ const index_js_4 = require("../errors/index.js");
|
|
|
16
16
|
const processing_queue_js_1 = require("../processing-queue/processing-queue.js");
|
|
17
17
|
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
|
|
18
18
|
class ConsumeMessage extends redis_smq_common_1.Runnable {
|
|
19
|
-
constructor(redisClient,
|
|
19
|
+
constructor(redisClient, consumer, queue, messageHandlerId, messageHandler, logger, eventBus) {
|
|
20
20
|
super();
|
|
21
21
|
this.consumeMessageWorker = null;
|
|
22
22
|
this.validateMessageHandler = (cb) => {
|
|
@@ -36,17 +36,17 @@ class ConsumeMessage extends redis_smq_common_1.Runnable {
|
|
|
36
36
|
cb();
|
|
37
37
|
};
|
|
38
38
|
this.queue = queue;
|
|
39
|
-
this.consumerId =
|
|
39
|
+
this.consumerId = consumer.getId();
|
|
40
40
|
this.messageHandler = messageHandler;
|
|
41
41
|
this.messageHandlerId = messageHandlerId;
|
|
42
42
|
this.redisClient = redisClient;
|
|
43
|
-
const { keyQueueProcessing } = redis_keys_js_1.redisKeys.getQueueConsumerKeys(this.queue.queueParams, consumerId);
|
|
43
|
+
const { keyQueueProcessing } = redis_keys_js_1.redisKeys.getQueueConsumerKeys(this.queue.queueParams, this.consumerId);
|
|
44
44
|
const { keyQueueAcknowledged } = redis_keys_js_1.redisKeys.getQueueKeys(this.queue.queueParams, this.queue.groupId);
|
|
45
45
|
this.keyQueueAcknowledged = keyQueueAcknowledged;
|
|
46
46
|
this.keyQueueProcessing = keyQueueProcessing;
|
|
47
47
|
this.logger = logger;
|
|
48
|
-
if (
|
|
49
|
-
(0, event_bus_publisher_js_1.eventBusPublisher)(this,
|
|
48
|
+
if (eventBus) {
|
|
49
|
+
(0, event_bus_publisher_js_1.eventBusPublisher)(this, eventBus, logger);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
getLogger() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ILogger } from 'redis-smq-common';
|
|
2
|
+
import { EventBus } from '../../../event-bus/index.js';
|
|
2
3
|
import { ConsumeMessage } from './consume-message.js';
|
|
3
|
-
export declare function eventBusPublisher(consumeMessage: ConsumeMessage,
|
|
4
|
+
export declare function eventBusPublisher(consumeMessage: ConsumeMessage, eventBus: EventBus, logger: ILogger): void;
|
|
4
5
|
//# sourceMappingURL=event-bus-publisher.d.ts.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.eventBusPublisher = void 0;
|
|
4
|
-
|
|
5
|
-
function eventBusPublisher(consumeMessage, consumerId, logger) {
|
|
6
|
-
const eventBus = (0, event_bus_redis_factory_js_1.EventBusRedisFactory)(consumerId, () => void 0);
|
|
4
|
+
function eventBusPublisher(consumeMessage, eventBus, logger) {
|
|
7
5
|
const messageDeadLettered = (...args) => {
|
|
8
6
|
const instance = eventBus.getInstance();
|
|
9
7
|
if (instance instanceof Error)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ICallback, ILogger, IRedisClient, Runnable, Timer } from 'redis-smq-common';
|
|
2
2
|
import { TConsumerDequeueMessageEvent } from '../../../../common/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RedisClient } from '../../../../common/redis-client/redis-client.js';
|
|
4
|
+
import { EventBus } from '../../../event-bus/index.js';
|
|
4
5
|
import { EQueueType, IQueueParsedParams, IQueueRateLimit } from '../../../queue/index.js';
|
|
6
|
+
import { Consumer } from '../../consumer/consumer.js';
|
|
5
7
|
export declare class DequeueMessage extends Runnable<TConsumerDequeueMessageEvent> {
|
|
6
|
-
protected redisClient:
|
|
8
|
+
protected redisClient: RedisClient;
|
|
7
9
|
protected queue: IQueueParsedParams;
|
|
8
10
|
protected consumerId: string;
|
|
9
11
|
protected timer: Timer;
|
|
@@ -17,12 +19,12 @@ export declare class DequeueMessage extends Runnable<TConsumerDequeueMessageEven
|
|
|
17
19
|
protected logger: ILogger;
|
|
18
20
|
protected blockUntilMessageReceived: boolean;
|
|
19
21
|
protected autoCloseRedisConnection: boolean;
|
|
20
|
-
protected eventBus:
|
|
22
|
+
protected eventBus: EventBus;
|
|
21
23
|
protected queueRateLimit: IQueueRateLimit | null;
|
|
22
24
|
protected queueType: EQueueType | null;
|
|
23
25
|
protected idleThreshold: number;
|
|
24
26
|
protected idleTrigger: number;
|
|
25
|
-
constructor(redisClient:
|
|
27
|
+
constructor(redisClient: RedisClient, queue: IQueueParsedParams, consumer: Consumer, logger: ILogger, eventBus: EventBus | null, blockUntilMessageReceived?: boolean, autoCloseRedisConnection?: boolean);
|
|
26
28
|
protected getLogger(): ILogger;
|
|
27
29
|
protected handleError(err: Error): void;
|
|
28
30
|
protected goingUp(): ((cb: ICallback<void>) => void)[];
|