@diia-inhouse/diia-queue 8.0.0 → 13.2.1
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/LICENCE.md +59 -59
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.js +6 -4
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/messageBrokerServiceConfig.js +26 -0
- package/dist/interfaces/messageBrokerServiceConfig.js.map +1 -0
- package/dist/interfaces/metrics/index.js +14 -0
- package/dist/interfaces/metrics/index.js.map +1 -1
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js +4 -1
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +1 -1
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +1 -9
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +1 -1
- package/dist/interfaces/providers/rabbitmq/index.js +41 -17
- package/dist/interfaces/providers/rabbitmq/index.js.map +1 -1
- package/dist/interfaces/queueStatus.js.map +1 -1
- package/dist/interfaces/{eventBus.js → services/eventMessageHandler.js} +1 -1
- package/dist/interfaces/services/eventMessageHandler.js.map +1 -0
- package/dist/metrics/index.js +1 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/providers/index.js +22 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/rabbitmq/amqpAsserter.js +417 -0
- package/dist/providers/rabbitmq/amqpAsserter.js.map +1 -0
- package/dist/providers/rabbitmq/amqpConnection.js +47 -25
- package/dist/providers/rabbitmq/amqpConnection.js.map +1 -1
- package/dist/providers/rabbitmq/amqpListener.js +167 -113
- package/dist/providers/rabbitmq/amqpListener.js.map +1 -1
- package/dist/providers/rabbitmq/amqpPublisher.js +145 -96
- package/dist/providers/rabbitmq/amqpPublisher.js.map +1 -1
- package/dist/providers/rabbitmq/index.js +104 -285
- package/dist/providers/rabbitmq/index.js.map +1 -1
- package/dist/services/communicator.js +187 -0
- package/dist/services/communicator.js.map +1 -0
- package/dist/services/eventBus.js +41 -46
- package/dist/services/eventBus.js.map +1 -1
- package/dist/services/eventCommunicator.js +125 -0
- package/dist/services/eventCommunicator.js.map +1 -0
- package/dist/services/eventMessageHandler.js +73 -89
- package/dist/services/eventMessageHandler.js.map +1 -1
- package/dist/services/externalCommunicator.js +10 -103
- package/dist/services/externalCommunicator.js.map +1 -1
- package/dist/services/externalEventBus.js +147 -55
- package/dist/services/externalEventBus.js.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/metrics.js +49 -0
- package/dist/services/metrics.js.map +1 -0
- package/dist/services/optionsBuilder.js +59 -0
- package/dist/services/optionsBuilder.js.map +1 -0
- package/dist/services/queue.js +63 -26
- package/dist/services/queue.js.map +1 -1
- package/dist/services/scheduledTask.js +52 -48
- package/dist/services/scheduledTask.js.map +1 -1
- package/dist/services/task.js +149 -28
- package/dist/services/task.js.map +1 -1
- package/dist/types/constants.d.ts +3 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interfaces/deps.d.ts +3 -2
- package/dist/types/interfaces/externalCommunicator.d.ts +5 -12
- package/dist/types/interfaces/index.d.ts +70 -20
- package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +79 -0
- package/dist/types/interfaces/messageHandler.d.ts +1 -1
- package/dist/types/interfaces/metrics/index.d.ts +13 -0
- package/dist/types/interfaces/options.d.ts +29 -4
- package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +3 -0
- package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +9 -17
- package/dist/types/interfaces/providers/rabbitmq/index.d.ts +71 -7
- package/dist/types/interfaces/queueConfig/configs.d.ts +19 -11
- package/dist/types/interfaces/queueStatus.d.ts +3 -1
- package/dist/types/interfaces/services/eventMessageHandler.d.ts +5 -0
- package/dist/types/metrics/index.d.ts +1 -2
- package/dist/types/providers/index.d.ts +5 -0
- package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +49 -0
- package/dist/types/providers/rabbitmq/amqpConnection.d.ts +3 -7
- package/dist/types/providers/rabbitmq/amqpListener.d.ts +26 -11
- package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +25 -16
- package/dist/types/providers/rabbitmq/index.d.ts +33 -40
- package/dist/types/services/communicator.d.ts +57 -0
- package/dist/types/services/eventBus.d.ts +15 -14
- package/dist/types/services/eventCommunicator.d.ts +15 -0
- package/dist/types/services/eventMessageHandler.d.ts +9 -11
- package/dist/types/services/externalCommunicator.d.ts +6 -19
- package/dist/types/services/externalEventBus.d.ts +28 -13
- package/dist/types/services/index.d.ts +1 -1
- package/dist/types/services/metrics.d.ts +11 -0
- package/dist/types/services/optionsBuilder.d.ts +10 -0
- package/dist/types/services/queue.d.ts +14 -9
- package/dist/types/services/scheduledTask.d.ts +22 -14
- package/dist/types/services/task.d.ts +21 -11
- package/dist/types/utils.d.ts +2 -2
- package/dist/utils.js +5 -2
- package/dist/utils.js.map +1 -1
- package/package.json +34 -41
- package/dist/interfaces/eventBus.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/amqpListener.js +0 -3
- package/dist/interfaces/providers/rabbitmq/amqpListener.js.map +0 -1
- package/dist/services/externalCommunicatorChannel.js +0 -31
- package/dist/services/externalCommunicatorChannel.js.map +0 -1
- package/dist/types/interfaces/eventBus.d.ts +0 -19
- package/dist/types/interfaces/providers/rabbitmq/amqpListener.d.ts +0 -7
- package/dist/types/services/externalCommunicatorChannel.d.ts +0 -11
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const errors_1 = require("@diia-inhouse/errors");
|
|
7
|
+
const interfaces_1 = require("../interfaces");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const optionsBuilder_1 = __importDefault(require("./optionsBuilder"));
|
|
10
|
+
class Communicator {
|
|
11
|
+
logger;
|
|
12
|
+
queueProvider;
|
|
13
|
+
hostName;
|
|
14
|
+
systemServiceName;
|
|
15
|
+
optionsBuilder;
|
|
16
|
+
eventNameToExchangeNameMap = new Map();
|
|
17
|
+
queueBindToMap = new Map();
|
|
18
|
+
exchangesMap = new Map();
|
|
19
|
+
serviceConfig = {
|
|
20
|
+
exchangesOptions: [],
|
|
21
|
+
queuesOptions: [],
|
|
22
|
+
};
|
|
23
|
+
constructor(logger, queueProvider, hostName, systemServiceName) {
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.queueProvider = queueProvider;
|
|
26
|
+
this.hostName = hostName;
|
|
27
|
+
this.systemServiceName = systemServiceName;
|
|
28
|
+
const { queuesOptions = [] } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
29
|
+
for (const { name: queueName, bindTo } of queuesOptions) {
|
|
30
|
+
this.queueBindToMap.set(queueName, bindTo);
|
|
31
|
+
}
|
|
32
|
+
this.optionsBuilder = new optionsBuilder_1.default(this.queueProvider);
|
|
33
|
+
}
|
|
34
|
+
async onInit() {
|
|
35
|
+
await this.init();
|
|
36
|
+
}
|
|
37
|
+
async onDestroy() {
|
|
38
|
+
const { queuesOptions } = this.serviceConfig;
|
|
39
|
+
const queueNames = queuesOptions.map(({ name }) => name);
|
|
40
|
+
await this.unsubscribeFromQueues(queueNames);
|
|
41
|
+
}
|
|
42
|
+
async subscribeToQueues(listeners) {
|
|
43
|
+
for await (const listener of listeners) {
|
|
44
|
+
const { eventNames, queueOptions: { name: queueName }, } = listener;
|
|
45
|
+
try {
|
|
46
|
+
// eslint-disable-next-line unicorn/consistent-destructuring
|
|
47
|
+
await this.subscribe(queueName, listener.handler);
|
|
48
|
+
this.logger.info(`${this.constructor.name} service listener [${eventNames ? eventNames.join(' ') : queueName}] is initialized successfully`);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
this.logger.error(`Failed to initialize ${this.constructor.name} service`, { err });
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async subscribe(queueName, messageHandler) {
|
|
57
|
+
return await this.queueProvider.subscribe(queueName, messageHandler);
|
|
58
|
+
}
|
|
59
|
+
async unsubscribeFromQueues(queueNames) {
|
|
60
|
+
for await (const queueName of queueNames) {
|
|
61
|
+
await this.unsubscribe(queueName);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async unsubscribe(queueName) {
|
|
65
|
+
await this.queueProvider.unsubscribe(queueName);
|
|
66
|
+
}
|
|
67
|
+
async publishToQueue(queueName, messageData, options) {
|
|
68
|
+
const bindTo = [...(this.queueBindToMap.get(queueName) ?? [])];
|
|
69
|
+
if (bindTo.length === 0) {
|
|
70
|
+
const message = `Not found bind options for queue [${queueName}]`;
|
|
71
|
+
this.logger.error(message);
|
|
72
|
+
throw new errors_1.InternalServerError(message);
|
|
73
|
+
}
|
|
74
|
+
const queueMessageData = this.getPublishQueueMessageData(messageData.event, messageData.payload);
|
|
75
|
+
for await (const bindOptions of bindTo) {
|
|
76
|
+
const { exchangeName, routingKey } = bindOptions;
|
|
77
|
+
await this.queueProvider.publish(queueMessageData, exchangeName, routingKey, options);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async publishToExchange(exchangeName, routingKey, messageData, options) {
|
|
81
|
+
if (!this.exchangesMap.has(exchangeName)) {
|
|
82
|
+
const message = `Not found exchange [${exchangeName}]`;
|
|
83
|
+
this.logger.error(message);
|
|
84
|
+
throw new errors_1.InternalServerError(message);
|
|
85
|
+
}
|
|
86
|
+
const message = messageData instanceof interfaces_1.Message ? messageData.data : this.getPublishQueueMessageData(messageData.event, messageData.payload);
|
|
87
|
+
return await this.queueProvider.publish(message, exchangeName, routingKey, options);
|
|
88
|
+
}
|
|
89
|
+
async publishEventToExchange(eventName, payload, options) {
|
|
90
|
+
const exchangeName = this.eventNameToExchangeNameMap.get(eventName);
|
|
91
|
+
if (!exchangeName) {
|
|
92
|
+
const message = `Exchange for event [${eventName}] is not defined`;
|
|
93
|
+
this.logger.error(message);
|
|
94
|
+
throw new errors_1.InternalServerError(message);
|
|
95
|
+
}
|
|
96
|
+
const { routingKey, ...opts } = options || {};
|
|
97
|
+
const message = payload instanceof interfaces_1.Message ? payload.data : this.getPublishQueueMessageData(eventName, payload);
|
|
98
|
+
return await this.queueProvider.publish(message, exchangeName, routingKey, opts);
|
|
99
|
+
}
|
|
100
|
+
getPublishQueueMessageData(eventName, message, partialMeta) {
|
|
101
|
+
const meta = {
|
|
102
|
+
date: new Date(),
|
|
103
|
+
...partialMeta,
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
meta,
|
|
107
|
+
event: eventName,
|
|
108
|
+
payload: message,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
async init() {
|
|
112
|
+
this.buildEventNameToExchangeNameMap();
|
|
113
|
+
const { rabbit: { consumerEnabled } = {} } = this.queueProvider.getConfig();
|
|
114
|
+
const producerExchangesOptions = this.getProducerExchangesOptions();
|
|
115
|
+
const listeners = consumerEnabled === false ? [] : [...this.getMulticastListeners(), ...this.getUnicastListeners()];
|
|
116
|
+
const serviceConfig = this.getServiceConfig(listeners, producerExchangesOptions);
|
|
117
|
+
this.serviceConfig = serviceConfig;
|
|
118
|
+
const { exchangesOptions } = serviceConfig;
|
|
119
|
+
this.buildExchangesMap(exchangesOptions);
|
|
120
|
+
await this.queueProvider.init(serviceConfig);
|
|
121
|
+
await this.subscribeToQueues(listeners);
|
|
122
|
+
return serviceConfig;
|
|
123
|
+
}
|
|
124
|
+
buildExchangesMap(exchangesOptions) {
|
|
125
|
+
for (const exchangeOptions of exchangesOptions) {
|
|
126
|
+
const { name } = exchangeOptions;
|
|
127
|
+
this.exchangesMap.set(name, exchangeOptions);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
buildEventNameToExchangeNameMap() {
|
|
131
|
+
const { topics } = this.queueProvider.getConfig();
|
|
132
|
+
for (const topic in topics) {
|
|
133
|
+
const { events } = topics[topic];
|
|
134
|
+
const exchangeName = this.getExchangeNameWithSuffix(topic);
|
|
135
|
+
for (const eventName of events) {
|
|
136
|
+
this.eventNameToExchangeNameMap.set(eventName, exchangeName);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
getServiceConfig(listeners, implicitExchangesOptions = []) {
|
|
141
|
+
const { queuesOptions, exchangesOptions } = this.unifyServiceConfig(listeners, implicitExchangesOptions);
|
|
142
|
+
return {
|
|
143
|
+
exchangesOptions,
|
|
144
|
+
queuesOptions: queuesOptions.map((queueOptions) => this.enrichQueueConsumerOptions(queueOptions)),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
unifyServiceConfig(listeners, implicitExchangesOptions = []) {
|
|
148
|
+
const queuesMap = new Map();
|
|
149
|
+
const exchangesMap = new Map();
|
|
150
|
+
for (const listener of listeners) {
|
|
151
|
+
const { queueOptions, exchangesOptions } = listener;
|
|
152
|
+
queuesMap.set(queueOptions.name, queueOptions);
|
|
153
|
+
for (const exchangeOptions of exchangesOptions) {
|
|
154
|
+
exchangesMap.set(exchangeOptions.name, exchangeOptions);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const { queuesOptions, exchangesOptions: explicitExchangesOptions } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
158
|
+
for (const queueOpts of queuesOptions) {
|
|
159
|
+
if (!queuesMap.has(queueOpts.name)) {
|
|
160
|
+
queuesMap.set(queueOpts.name, queueOpts);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
for (const exchangeOpts of [...explicitExchangesOptions, ...implicitExchangesOptions]) {
|
|
164
|
+
if (!exchangesMap.has(exchangeOpts.name)) {
|
|
165
|
+
exchangesMap.set(exchangeOpts.name, exchangeOpts);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
queuesOptions: [...queuesMap.values()],
|
|
170
|
+
exchangesOptions: [...exchangesMap.values()],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
enrichQueueConsumerOptions(queueOptions) {
|
|
174
|
+
const { prefetchCount: globalPrefetchCount } = this.optionsBuilder.defineConsumerOptionsBasedOnGlobalConfig();
|
|
175
|
+
const { prefetchCount = globalPrefetchCount, consumerTag = (0, utils_1.getConsumerTag)(this.systemServiceName, this.hostName), ...consumerOptions } = queueOptions.consumerOptions || {};
|
|
176
|
+
return {
|
|
177
|
+
...queueOptions,
|
|
178
|
+
consumerOptions: {
|
|
179
|
+
...consumerOptions,
|
|
180
|
+
consumerTag,
|
|
181
|
+
prefetchCount,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.default = Communicator;
|
|
187
|
+
//# sourceMappingURL=communicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"communicator.js","sourceRoot":"","sources":["../../src/services/communicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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;
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
4
|
};
|
|
25
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
6
|
exports.EventBus = void 0;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
7
|
+
const interfaces_1 = require("../interfaces");
|
|
8
|
+
const communicator_1 = __importDefault(require("./communicator"));
|
|
9
|
+
const eventCommunicator_1 = require("./eventCommunicator");
|
|
10
|
+
class EventBus extends communicator_1.default {
|
|
30
11
|
eventListenerList;
|
|
31
|
-
eventMessageHandler;
|
|
32
|
-
logger;
|
|
33
12
|
queueName;
|
|
34
|
-
|
|
35
|
-
|
|
13
|
+
eventCommunicator;
|
|
14
|
+
constructor(queueProvider, eventListenerList, eventMessageHandler, logger, hostName, systemServiceName, queueName) {
|
|
15
|
+
super(logger, queueProvider, hostName, systemServiceName);
|
|
36
16
|
this.eventListenerList = eventListenerList;
|
|
37
|
-
this.eventMessageHandler = eventMessageHandler;
|
|
38
|
-
this.logger = logger;
|
|
39
17
|
this.queueName = queueName;
|
|
18
|
+
this.eventCommunicator = new eventCommunicator_1.EventCommunicator(logger, queueProvider, eventMessageHandler, eventListenerList);
|
|
19
|
+
}
|
|
20
|
+
async publish(eventName, payload, options) {
|
|
21
|
+
return await this.publishEventToExchange(eventName, payload, options);
|
|
22
|
+
}
|
|
23
|
+
getExchangeNameWithSuffix(exchangeName) {
|
|
24
|
+
return exchangeName;
|
|
25
|
+
}
|
|
26
|
+
getUnicastListeners() {
|
|
27
|
+
return this.eventCommunicator.getUnicastListeners();
|
|
40
28
|
}
|
|
41
|
-
|
|
42
|
-
await this.queueProvider.init?.();
|
|
29
|
+
getProducerExchangesOptions() {
|
|
43
30
|
if (!this.queueName) {
|
|
44
|
-
return;
|
|
31
|
+
return [];
|
|
45
32
|
}
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
33
|
+
const { rabbit: { declareOptions: { assertExchanges } = {} }, } = this.queueProvider.getConfig();
|
|
34
|
+
const exchangeNames = this.optionsBuilder.getExchangeNamesByQueueName(this.queueName);
|
|
35
|
+
const exchangesOptions = [];
|
|
36
|
+
for (const exchangeName of exchangeNames) {
|
|
37
|
+
exchangesOptions.push({
|
|
38
|
+
name: exchangeName,
|
|
39
|
+
declare: assertExchanges,
|
|
40
|
+
type: interfaces_1.ExchangeType.Topic,
|
|
41
|
+
});
|
|
53
42
|
}
|
|
43
|
+
return exchangesOptions;
|
|
54
44
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
getMulticastListeners() {
|
|
46
|
+
if (!this.queueName || this.eventListenerList.length === 0) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
const [queueOptions] = this.optionsBuilder.defineQueueOptionsBasedOnGlobalConfig(this.queueName);
|
|
50
|
+
if (!queueOptions) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const exchangesOptions = this.getProducerExchangesOptions();
|
|
54
|
+
return this.eventCommunicator.getMulticastListeners([queueOptions], exchangesOptions);
|
|
60
55
|
}
|
|
61
56
|
}
|
|
62
57
|
exports.EventBus = EventBus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../src/services/eventBus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../src/services/eventBus.ts"],"names":[],"mappings":";;;;;;AAGA,8CAQsB;AAKtB,kEAAyC;AACzC,2DAAuD;AAGvD,MAAa,QAAS,SAAQ,sBAAY;IAKjB;IAKA;IATJ,iBAAiB,CAAmB;IAErD,YACI,aAA+B,EACd,iBAAqC,EACtD,mBAAwC,EACxC,MAAc,EACd,QAAgB,EAChB,iBAAyB,EACR,SAAqB;QAEtC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAA;QAPxC,sBAAiB,GAAjB,iBAAiB,CAAoB;QAKrC,cAAS,GAAT,SAAS,CAAY;QAItC,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;IACjH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAoB,EAAE,OAAuB,EAAE,OAAwB;QACjF,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;IAES,yBAAyB,CAAC,YAA0B;QAC1D,OAAO,YAAY,CAAA;IACvB,CAAC;IAES,mBAAmB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;IACvD,CAAC;IAES,2BAA2B;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,EACF,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,EAAE,GACvD,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAA;QAElC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAErF,MAAM,gBAAgB,GAAsB,EAAE,CAAA;QAE9C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,gBAAgB,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,yBAAY,CAAC,KAAK;aAC3B,CAAC,CAAA;QACN,CAAC;QAED,OAAO,gBAAgB,CAAA;IAC3B,CAAC;IAES,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;QAE3D,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACzF,CAAC;CACJ;AAnED,4BAmEC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.EventCommunicator = void 0;
|
|
40
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
41
|
+
const Utils = __importStar(require("../utils"));
|
|
42
|
+
class EventCommunicator {
|
|
43
|
+
logger;
|
|
44
|
+
queueProvider;
|
|
45
|
+
eventMessageHandler;
|
|
46
|
+
listenerList;
|
|
47
|
+
constructor(logger, queueProvider, eventMessageHandler, listenerList = []) {
|
|
48
|
+
this.logger = logger;
|
|
49
|
+
this.queueProvider = queueProvider;
|
|
50
|
+
this.eventMessageHandler = eventMessageHandler;
|
|
51
|
+
this.listenerList = listenerList;
|
|
52
|
+
}
|
|
53
|
+
getMulticastListeners(queuesOptions, exchangesOptions, eventQueueMap = new Map()) {
|
|
54
|
+
const eventListeners = Utils.collectEventBusListeners(this.listenerList);
|
|
55
|
+
const eventsHandler = this.eventMessageHandler.eventListenersMessageHandler.bind(this.eventMessageHandler, eventListeners);
|
|
56
|
+
const listeners = [];
|
|
57
|
+
for (const queueOptions of queuesOptions) {
|
|
58
|
+
const { name: queueName } = queueOptions;
|
|
59
|
+
const eventNames = this.defineEventNamesByQueueName(queueName, eventQueueMap);
|
|
60
|
+
const listener = {
|
|
61
|
+
eventNames,
|
|
62
|
+
queueOptions,
|
|
63
|
+
exchangesOptions,
|
|
64
|
+
handler: eventsHandler,
|
|
65
|
+
};
|
|
66
|
+
listeners.push(listener);
|
|
67
|
+
}
|
|
68
|
+
return listeners;
|
|
69
|
+
}
|
|
70
|
+
getUnicastListeners() {
|
|
71
|
+
const listeners = [];
|
|
72
|
+
const { queuesOptions, exchangesOptions } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
73
|
+
const queuesOptionsMap = lodash_1.default.keyBy(queuesOptions, 'name');
|
|
74
|
+
const exchangesOptionsMap = lodash_1.default.keyBy(exchangesOptions, 'name');
|
|
75
|
+
for (const eventListener of this.listenerList) {
|
|
76
|
+
const { queueNames = [] } = eventListener;
|
|
77
|
+
for (const queueName of queueNames) {
|
|
78
|
+
const queueOptions = queuesOptionsMap[queueName];
|
|
79
|
+
if (!queueOptions) {
|
|
80
|
+
this.logger.error(`Not found queue options by name (${queueName}) for ${this.constructor.name} service`);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const exchangesOptions = this.defineConsumerExchangesOptions(queueName, queueOptions.bindTo, exchangesOptionsMap);
|
|
84
|
+
const eventMessageHandler = this.eventMessageHandler.eventListenerMessageHandler.bind(this.eventMessageHandler, eventListener);
|
|
85
|
+
const listener = {
|
|
86
|
+
queueOptions,
|
|
87
|
+
exchangesOptions,
|
|
88
|
+
handler: eventMessageHandler,
|
|
89
|
+
};
|
|
90
|
+
listeners.push(listener);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return listeners;
|
|
94
|
+
}
|
|
95
|
+
defineConsumerExchangesOptions(queueName, bindTo = [], exchangesMap = {}) {
|
|
96
|
+
const exchangesOptions = [];
|
|
97
|
+
for (const bindOptions of bindTo) {
|
|
98
|
+
const { exchangeName } = bindOptions;
|
|
99
|
+
const exchangeOptions = exchangesMap[exchangeName];
|
|
100
|
+
if (!exchangeOptions) {
|
|
101
|
+
this.logger.error(`Not found exchange options by name (${exchangeName}) for ${this.constructor.name} service`);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
exchangesOptions.push(exchangeOptions);
|
|
105
|
+
}
|
|
106
|
+
if (exchangesOptions.length === 0) {
|
|
107
|
+
this.logger.error(`Not found exchanges options for queue (${queueName}) for ${this.constructor.name} service`);
|
|
108
|
+
}
|
|
109
|
+
return exchangesOptions;
|
|
110
|
+
}
|
|
111
|
+
defineEventNamesByQueueName(queueName, eventQueueMap) {
|
|
112
|
+
if (eventQueueMap.size === 0) {
|
|
113
|
+
return this.listenerList.map(({ event }) => event);
|
|
114
|
+
}
|
|
115
|
+
const eventNames = [];
|
|
116
|
+
for (const [eventName, eventQueueName] of eventQueueMap) {
|
|
117
|
+
if (eventQueueName === queueName) {
|
|
118
|
+
eventNames.push(eventName);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return eventNames;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.EventCommunicator = EventCommunicator;
|
|
125
|
+
//# sourceMappingURL=eventCommunicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventCommunicator.js","sourceRoot":"","sources":["../../src/services/eventCommunicator.ts"],"names":[],"mappings":"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"}
|