@diia-inhouse/diia-queue 13.3.4 → 14.0.10
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/dist/constants.js +9 -9
- package/dist/index.d.ts +27 -0
- package/dist/index.js +23 -21
- package/dist/interfaces/deps.d.ts +30 -0
- package/dist/interfaces/externalCommunicator.d.ts +58 -0
- package/dist/interfaces/index.d.ts +95 -0
- package/dist/interfaces/index.js +7 -30
- package/dist/interfaces/messageBrokerServiceConfig.d.ts +80 -0
- package/dist/interfaces/messageBrokerServiceConfig.js +27 -24
- package/dist/interfaces/messageHandler.d.ts +6 -0
- package/dist/interfaces/metrics/index.d.ts +23 -0
- package/dist/interfaces/metrics/index.js +12 -16
- package/dist/interfaces/options.d.ts +52 -0
- package/dist/interfaces/providers/rabbitmq/amqpConnection.d.ts +33 -0
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js +14 -17
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.d.ts +20 -0
- package/dist/interfaces/providers/rabbitmq/index.d.ts +107 -0
- package/dist/interfaces/providers/rabbitmq/index.js +35 -47
- package/dist/interfaces/queueConfig/configs.d.ts +47 -0
- package/dist/interfaces/queueConfig/configs.js +8 -9
- package/dist/interfaces/queueConfig/index.d.ts +1 -0
- package/dist/interfaces/queueContext.d.ts +8 -0
- package/dist/interfaces/queueStatus.d.ts +15 -0
- package/dist/interfaces/queueStatus.js +8 -9
- package/dist/metrics/index.js +5 -8
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.js +6 -22
- package/dist/providers/rabbitmq/amqpAsserter.d.ts +53 -0
- package/dist/providers/rabbitmq/amqpAsserter.js +369 -416
- package/dist/providers/rabbitmq/amqpConnection.d.ts +24 -0
- package/dist/providers/rabbitmq/amqpConnection.js +97 -150
- package/dist/providers/rabbitmq/amqpListener.d.ts +47 -0
- package/dist/providers/rabbitmq/amqpListener.js +218 -225
- package/dist/providers/rabbitmq/amqpPublisher.d.ts +38 -0
- package/dist/providers/rabbitmq/amqpPublisher.js +184 -191
- package/dist/providers/rabbitmq/index.d.ts +56 -0
- package/dist/providers/rabbitmq/index.js +161 -186
- package/dist/services/communicator.d.ts +66 -0
- package/dist/services/communicator.js +164 -186
- package/dist/services/eventBus.d.ts +25 -0
- package/dist/services/eventBus.js +45 -57
- package/dist/services/eventCommunicator.js +75 -124
- package/dist/services/eventMessageHandler.d.ts +25 -0
- package/dist/services/eventMessageHandler.js +112 -129
- package/dist/services/eventMessageValidator.d.ts +13 -0
- package/dist/services/eventMessageValidator.js +59 -44
- package/dist/services/externalCommunicator.d.ts +114 -0
- package/dist/services/externalCommunicator.js +149 -140
- package/dist/services/externalEventBus.d.ts +39 -0
- package/dist/services/externalEventBus.js +144 -162
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.js +10 -26
- package/dist/services/metrics.d.ts +15 -0
- package/dist/services/metrics.js +46 -49
- package/dist/services/optionsBuilder.d.ts +14 -0
- package/dist/services/optionsBuilder.js +43 -58
- package/dist/services/queue.d.ts +29 -0
- package/dist/services/queue.js +78 -93
- package/dist/services/scheduledTask.d.ts +30 -0
- package/dist/services/scheduledTask.js +60 -68
- package/dist/services/task.d.ts +33 -0
- package/dist/services/task.js +160 -176
- package/dist/utils.js +7 -11
- package/package.json +44 -50
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/deps.js +0 -3
- package/dist/interfaces/deps.js.map +0 -1
- package/dist/interfaces/externalCommunicator.js +0 -3
- package/dist/interfaces/externalCommunicator.js.map +0 -1
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/messageBrokerServiceConfig.js.map +0 -1
- package/dist/interfaces/messageHandler.js +0 -3
- package/dist/interfaces/messageHandler.js.map +0 -1
- package/dist/interfaces/metrics/index.js.map +0 -1
- package/dist/interfaces/options.js +0 -3
- package/dist/interfaces/options.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +0 -4
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/index.js.map +0 -1
- package/dist/interfaces/queueConfig/configs.js.map +0 -1
- package/dist/interfaces/queueConfig/index.js +0 -18
- package/dist/interfaces/queueConfig/index.js.map +0 -1
- package/dist/interfaces/queueContext.js +0 -3
- package/dist/interfaces/queueContext.js.map +0 -1
- package/dist/interfaces/queueStatus.js.map +0 -1
- package/dist/interfaces/services/eventMessageHandler.js +0 -3
- package/dist/interfaces/services/eventMessageHandler.js.map +0 -1
- package/dist/metrics/index.js.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/rabbitmq/amqpAsserter.js.map +0 -1
- package/dist/providers/rabbitmq/amqpConnection.js.map +0 -1
- package/dist/providers/rabbitmq/amqpListener.js.map +0 -1
- package/dist/providers/rabbitmq/amqpPublisher.js.map +0 -1
- package/dist/providers/rabbitmq/index.js.map +0 -1
- package/dist/services/communicator.js.map +0 -1
- package/dist/services/eventBus.js.map +0 -1
- package/dist/services/eventCommunicator.js.map +0 -1
- package/dist/services/eventMessageHandler.js.map +0 -1
- package/dist/services/eventMessageValidator.js.map +0 -1
- package/dist/services/externalCommunicator.js.map +0 -1
- package/dist/services/externalEventBus.js.map +0 -1
- package/dist/services/index.js.map +0 -1
- package/dist/services/metrics.js.map +0 -1
- package/dist/services/optionsBuilder.js.map +0 -1
- package/dist/services/queue.js.map +0 -1
- package/dist/services/scheduledTask.js.map +0 -1
- package/dist/services/task.js.map +0 -1
- package/dist/types/constants.d.ts +0 -8
- package/dist/types/index.d.ts +0 -4
- package/dist/types/interfaces/deps.d.ts +0 -26
- package/dist/types/interfaces/externalCommunicator.d.ts +0 -54
- package/dist/types/interfaces/index.d.ts +0 -99
- package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +0 -79
- package/dist/types/interfaces/messageHandler.d.ts +0 -2
- package/dist/types/interfaces/metrics/index.d.ts +0 -20
- package/dist/types/interfaces/options.d.ts +0 -49
- package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +0 -29
- package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +0 -16
- package/dist/types/interfaces/providers/rabbitmq/index.d.ts +0 -114
- package/dist/types/interfaces/queueConfig/configs.d.ts +0 -47
- package/dist/types/interfaces/queueConfig/index.d.ts +0 -1
- package/dist/types/interfaces/queueContext.d.ts +0 -4
- package/dist/types/interfaces/queueStatus.d.ts +0 -11
- package/dist/types/interfaces/services/eventMessageHandler.d.ts +0 -5
- package/dist/types/metrics/index.d.ts +0 -3
- package/dist/types/providers/index.d.ts +0 -5
- package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +0 -49
- package/dist/types/providers/rabbitmq/amqpConnection.d.ts +0 -20
- package/dist/types/providers/rabbitmq/amqpListener.d.ts +0 -42
- package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +0 -34
- package/dist/types/providers/rabbitmq/index.d.ts +0 -52
- package/dist/types/services/communicator.d.ts +0 -57
- package/dist/types/services/eventBus.d.ts +0 -20
- package/dist/types/services/eventCommunicator.d.ts +0 -15
- package/dist/types/services/eventMessageHandler.d.ts +0 -19
- package/dist/types/services/eventMessageValidator.d.ts +0 -9
- package/dist/types/services/externalCommunicator.d.ts +0 -110
- package/dist/types/services/externalEventBus.d.ts +0 -33
- package/dist/types/services/index.d.ts +0 -9
- package/dist/types/services/metrics.d.ts +0 -11
- package/dist/types/services/optionsBuilder.d.ts +0 -10
- package/dist/types/services/queue.d.ts +0 -23
- package/dist/types/services/scheduledTask.d.ts +0 -25
- package/dist/types/services/task.d.ts +0 -28
- package/dist/types/utils.d.ts +0 -3
- package/dist/utils.js.map +0 -1
|
@@ -1,187 +1,165 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Message } from "../interfaces/providers/rabbitmq/index.js";
|
|
2
|
+
import "../interfaces/index.js";
|
|
3
|
+
import { getConsumerTag } from "../utils.js";
|
|
4
|
+
import OptionsBuilder from "./optionsBuilder.js";
|
|
5
|
+
import { InternalServerError } from "@diia-inhouse/errors";
|
|
6
|
+
//#region src/services/communicator.ts
|
|
7
|
+
var Communicator = class {
|
|
8
|
+
logger;
|
|
9
|
+
queueProvider;
|
|
10
|
+
hostName;
|
|
11
|
+
systemServiceName;
|
|
12
|
+
optionsBuilder;
|
|
13
|
+
eventNameToExchangeNameMap = /* @__PURE__ */ new Map();
|
|
14
|
+
queueBindToMap = /* @__PURE__ */ new Map();
|
|
15
|
+
exchangesMap = /* @__PURE__ */ new Map();
|
|
16
|
+
serviceConfig = {
|
|
17
|
+
exchangesOptions: [],
|
|
18
|
+
queuesOptions: []
|
|
19
|
+
};
|
|
20
|
+
constructor(logger, queueProvider, hostName, systemServiceName) {
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
this.queueProvider = queueProvider;
|
|
23
|
+
this.hostName = hostName;
|
|
24
|
+
this.systemServiceName = systemServiceName;
|
|
25
|
+
const { queuesOptions = [] } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
26
|
+
for (const { name: queueName, bindTo } of queuesOptions) this.queueBindToMap.set(queueName, bindTo);
|
|
27
|
+
this.optionsBuilder = new OptionsBuilder(this.queueProvider);
|
|
28
|
+
}
|
|
29
|
+
async onInit() {
|
|
30
|
+
await this.init();
|
|
31
|
+
}
|
|
32
|
+
async onDestroy() {
|
|
33
|
+
const { queuesOptions } = this.serviceConfig;
|
|
34
|
+
const queueNames = queuesOptions.map(({ name }) => name);
|
|
35
|
+
await this.unsubscribeFromQueues(queueNames);
|
|
36
|
+
}
|
|
37
|
+
async subscribeToQueues(listeners) {
|
|
38
|
+
for (const listener of listeners) {
|
|
39
|
+
const { eventNames, queueOptions: { name: queueName } } = listener;
|
|
40
|
+
try {
|
|
41
|
+
await this.subscribe(queueName, listener.handler);
|
|
42
|
+
this.logger.info(`${this.constructor.name} service listener [${eventNames ? eventNames.join(" ") : queueName}] is initialized successfully`);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
this.logger.error(`Failed to initialize ${this.constructor.name} service`, { err });
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async subscribe(queueName, messageHandler) {
|
|
50
|
+
return await this.queueProvider.subscribe(queueName, messageHandler);
|
|
51
|
+
}
|
|
52
|
+
async unsubscribeFromQueues(queueNames) {
|
|
53
|
+
for (const queueName of queueNames) await this.unsubscribe(queueName);
|
|
54
|
+
}
|
|
55
|
+
async unsubscribe(queueName) {
|
|
56
|
+
await this.queueProvider.unsubscribe(queueName);
|
|
57
|
+
}
|
|
58
|
+
async publishToQueue(queueName, messageData, options) {
|
|
59
|
+
const bindTo = [...this.queueBindToMap.get(queueName) ?? []];
|
|
60
|
+
if (bindTo.length === 0) {
|
|
61
|
+
const message = `Not found bind options for queue [${queueName}]`;
|
|
62
|
+
this.logger.error(message);
|
|
63
|
+
throw new InternalServerError(message);
|
|
64
|
+
}
|
|
65
|
+
const queueMessageData = this.getPublishQueueMessageData(messageData.event, messageData.payload);
|
|
66
|
+
for (const bindOptions of bindTo) {
|
|
67
|
+
const { exchangeName, routingKey } = bindOptions;
|
|
68
|
+
await this.queueProvider.publish(queueMessageData, exchangeName, routingKey, options);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async publishToExchange(exchangeName, routingKey, messageData, options) {
|
|
72
|
+
if (!this.exchangesMap.has(exchangeName)) {
|
|
73
|
+
const message = `Not found exchange [${exchangeName}]`;
|
|
74
|
+
this.logger.error(message);
|
|
75
|
+
throw new InternalServerError(message);
|
|
76
|
+
}
|
|
77
|
+
const message = messageData instanceof Message ? messageData.data : this.getPublishQueueMessageData(messageData.event, messageData.payload);
|
|
78
|
+
return await this.queueProvider.publish(message, exchangeName, routingKey, options);
|
|
79
|
+
}
|
|
80
|
+
async publishEventToExchange(eventName, payload, options) {
|
|
81
|
+
const exchangeName = this.eventNameToExchangeNameMap.get(eventName);
|
|
82
|
+
if (!exchangeName) {
|
|
83
|
+
const message = `Exchange for event [${eventName}] is not defined`;
|
|
84
|
+
this.logger.error(message);
|
|
85
|
+
throw new InternalServerError(message);
|
|
86
|
+
}
|
|
87
|
+
const { routingKey, ...opts } = options || {};
|
|
88
|
+
const message = payload instanceof Message ? payload.data : this.getPublishQueueMessageData(eventName, payload);
|
|
89
|
+
return await this.queueProvider.publish(message, exchangeName, routingKey, opts);
|
|
90
|
+
}
|
|
91
|
+
getPublishQueueMessageData(eventName, message, partialMeta) {
|
|
92
|
+
return {
|
|
93
|
+
meta: {
|
|
94
|
+
date: /* @__PURE__ */ new Date(),
|
|
95
|
+
...partialMeta
|
|
96
|
+
},
|
|
97
|
+
event: eventName,
|
|
98
|
+
payload: message
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async init() {
|
|
102
|
+
this.buildEventNameToExchangeNameMap();
|
|
103
|
+
const { rabbit: { consumerEnabled } = {} } = this.queueProvider.getConfig();
|
|
104
|
+
const producerExchangesOptions = this.getProducerExchangesOptions();
|
|
105
|
+
const listeners = consumerEnabled === false ? [] : [...this.getMulticastListeners(), ...this.getUnicastListeners()];
|
|
106
|
+
const serviceConfig = this.getServiceConfig(listeners, producerExchangesOptions);
|
|
107
|
+
this.serviceConfig = serviceConfig;
|
|
108
|
+
const { exchangesOptions } = serviceConfig;
|
|
109
|
+
this.buildExchangesMap(exchangesOptions);
|
|
110
|
+
await this.queueProvider.init(serviceConfig);
|
|
111
|
+
await this.subscribeToQueues(listeners);
|
|
112
|
+
return serviceConfig;
|
|
113
|
+
}
|
|
114
|
+
buildExchangesMap(exchangesOptions) {
|
|
115
|
+
for (const exchangeOptions of exchangesOptions) {
|
|
116
|
+
const { name } = exchangeOptions;
|
|
117
|
+
this.exchangesMap.set(name, exchangeOptions);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
buildEventNameToExchangeNameMap() {
|
|
121
|
+
const { topics } = this.queueProvider.getConfig();
|
|
122
|
+
for (const topic in topics) {
|
|
123
|
+
const { events } = topics[topic];
|
|
124
|
+
const exchangeName = this.getExchangeNameWithSuffix(topic);
|
|
125
|
+
for (const eventName of events) this.eventNameToExchangeNameMap.set(eventName, exchangeName);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
getServiceConfig(listeners, implicitExchangesOptions = []) {
|
|
129
|
+
const { queuesOptions, exchangesOptions } = this.unifyServiceConfig(listeners, implicitExchangesOptions);
|
|
130
|
+
return {
|
|
131
|
+
exchangesOptions,
|
|
132
|
+
queuesOptions: queuesOptions.map((queueOptions) => this.enrichQueueConsumerOptions(queueOptions))
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
unifyServiceConfig(listeners, implicitExchangesOptions = []) {
|
|
136
|
+
const queuesMap = /* @__PURE__ */ new Map();
|
|
137
|
+
const exchangesMap = /* @__PURE__ */ new Map();
|
|
138
|
+
for (const listener of listeners) {
|
|
139
|
+
const { queueOptions, exchangesOptions } = listener;
|
|
140
|
+
queuesMap.set(queueOptions.name, queueOptions);
|
|
141
|
+
for (const exchangeOptions of exchangesOptions) exchangesMap.set(exchangeOptions.name, exchangeOptions);
|
|
142
|
+
}
|
|
143
|
+
const { queuesOptions, exchangesOptions: explicitExchangesOptions } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
144
|
+
for (const queueOpts of queuesOptions) if (!queuesMap.has(queueOpts.name)) queuesMap.set(queueOpts.name, queueOpts);
|
|
145
|
+
for (const exchangeOpts of [...explicitExchangesOptions, ...implicitExchangesOptions]) if (!exchangesMap.has(exchangeOpts.name)) exchangesMap.set(exchangeOpts.name, exchangeOpts);
|
|
146
|
+
return {
|
|
147
|
+
queuesOptions: [...queuesMap.values()],
|
|
148
|
+
exchangesOptions: [...exchangesMap.values()]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
enrichQueueConsumerOptions(queueOptions) {
|
|
152
|
+
const { prefetchCount: globalPrefetchCount } = this.optionsBuilder.defineConsumerOptionsBasedOnGlobalConfig();
|
|
153
|
+
const { prefetchCount = globalPrefetchCount, consumerTag = getConsumerTag(this.systemServiceName, this.hostName), ...consumerOptions } = queueOptions.consumerOptions || {};
|
|
154
|
+
return {
|
|
155
|
+
...queueOptions,
|
|
156
|
+
consumerOptions: {
|
|
157
|
+
...consumerOptions,
|
|
158
|
+
consumerTag,
|
|
159
|
+
prefetchCount
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
4
163
|
};
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
164
|
+
//#endregion
|
|
165
|
+
export { Communicator as default };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ExchangeName, ExchangeOptions } from "../interfaces/messageBrokerServiceConfig.js";
|
|
2
|
+
import { PublishOptions } from "../interfaces/options.js";
|
|
3
|
+
import { EventName, QueueName } from "../interfaces/queueConfig/configs.js";
|
|
4
|
+
import { MessagePayload, PublishingResult } from "../interfaces/providers/rabbitmq/amqpPublisher.js";
|
|
5
|
+
import { EventBusListener, EventBusQueue, MessageBrokerServiceEventsListener } from "../interfaces/index.js";
|
|
6
|
+
import { RabbitMQProvider } from "../providers/rabbitmq/index.js";
|
|
7
|
+
import { Communicator } from "./communicator.js";
|
|
8
|
+
import { EventMessageHandler } from "./eventMessageHandler.js";
|
|
9
|
+
import { OnInit } from "@diia-inhouse/types";
|
|
10
|
+
import Logger$1 from "@diia-inhouse/diia-logger";
|
|
11
|
+
|
|
12
|
+
//#region src/services/eventBus.d.ts
|
|
13
|
+
declare class EventBus extends Communicator implements EventBusQueue, OnInit {
|
|
14
|
+
private readonly eventListenerList;
|
|
15
|
+
private readonly queueName;
|
|
16
|
+
private readonly eventCommunicator;
|
|
17
|
+
constructor(queueProvider: RabbitMQProvider, eventListenerList: EventBusListener[], eventMessageHandler: EventMessageHandler, logger: Logger$1, hostName: string, systemServiceName: string, queueName?: QueueName | undefined);
|
|
18
|
+
publish(eventName: EventName, payload: MessagePayload, options?: PublishOptions): Promise<PublishingResult>;
|
|
19
|
+
protected getExchangeNameWithSuffix(exchangeName: ExchangeName): string;
|
|
20
|
+
protected getUnicastListeners(): MessageBrokerServiceEventsListener[];
|
|
21
|
+
protected getProducerExchangesOptions(): ExchangeOptions[];
|
|
22
|
+
protected getMulticastListeners(): MessageBrokerServiceEventsListener[];
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { EventBus };
|
|
@@ -1,58 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import "../interfaces/messageBrokerServiceConfig.js";
|
|
2
|
+
import "../interfaces/index.js";
|
|
3
|
+
import Communicator from "./communicator.js";
|
|
4
|
+
import { EventCommunicator } from "./eventCommunicator.js";
|
|
5
|
+
//#region src/services/eventBus.ts
|
|
6
|
+
var EventBus = class extends Communicator {
|
|
7
|
+
eventListenerList;
|
|
8
|
+
queueName;
|
|
9
|
+
eventCommunicator;
|
|
10
|
+
constructor(queueProvider, eventListenerList, eventMessageHandler, logger, hostName, systemServiceName, queueName = void 0) {
|
|
11
|
+
super(logger, queueProvider, hostName, systemServiceName);
|
|
12
|
+
this.eventListenerList = eventListenerList;
|
|
13
|
+
this.queueName = queueName;
|
|
14
|
+
this.eventCommunicator = new EventCommunicator(logger, queueProvider, eventMessageHandler, eventListenerList);
|
|
15
|
+
}
|
|
16
|
+
async publish(eventName, payload, options) {
|
|
17
|
+
return await this.publishEventToExchange(eventName, payload, options);
|
|
18
|
+
}
|
|
19
|
+
getExchangeNameWithSuffix(exchangeName) {
|
|
20
|
+
return exchangeName;
|
|
21
|
+
}
|
|
22
|
+
getUnicastListeners() {
|
|
23
|
+
return this.eventCommunicator.getUnicastListeners();
|
|
24
|
+
}
|
|
25
|
+
getProducerExchangesOptions() {
|
|
26
|
+
if (!this.queueName) return [];
|
|
27
|
+
const { rabbit: { declareOptions: { assertExchanges } = {} } } = this.queueProvider.getConfig();
|
|
28
|
+
const exchangeNames = this.optionsBuilder.getExchangeNamesByQueueName(this.queueName);
|
|
29
|
+
const exchangesOptions = [];
|
|
30
|
+
for (const exchangeName of exchangeNames) exchangesOptions.push({
|
|
31
|
+
name: exchangeName,
|
|
32
|
+
declare: assertExchanges,
|
|
33
|
+
type: "topic"
|
|
34
|
+
});
|
|
35
|
+
return exchangesOptions;
|
|
36
|
+
}
|
|
37
|
+
getMulticastListeners() {
|
|
38
|
+
if (!this.queueName || this.eventListenerList.length === 0) return [];
|
|
39
|
+
const [queueOptions] = this.optionsBuilder.defineQueueOptionsBasedOnGlobalConfig(this.queueName);
|
|
40
|
+
if (!queueOptions) return [];
|
|
41
|
+
const exchangesOptions = this.getProducerExchangesOptions();
|
|
42
|
+
return this.eventCommunicator.getMulticastListeners([queueOptions], exchangesOptions);
|
|
43
|
+
}
|
|
4
44
|
};
|
|
5
|
-
|
|
6
|
-
|
|
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 {
|
|
11
|
-
eventListenerList;
|
|
12
|
-
queueName;
|
|
13
|
-
eventCommunicator;
|
|
14
|
-
constructor(queueProvider, eventListenerList, eventMessageHandler, logger, hostName, systemServiceName, queueName) {
|
|
15
|
-
super(logger, queueProvider, hostName, systemServiceName);
|
|
16
|
-
this.eventListenerList = eventListenerList;
|
|
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();
|
|
28
|
-
}
|
|
29
|
-
getProducerExchangesOptions() {
|
|
30
|
-
if (!this.queueName) {
|
|
31
|
-
return [];
|
|
32
|
-
}
|
|
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
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return exchangesOptions;
|
|
44
|
-
}
|
|
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);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.EventBus = EventBus;
|
|
58
|
-
//# sourceMappingURL=eventBus.js.map
|
|
45
|
+
//#endregion
|
|
46
|
+
export { EventBus };
|
|
@@ -1,125 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
1
|
+
import { collectEventBusListeners } from "../utils.js";
|
|
2
|
+
import lodash from "lodash";
|
|
3
|
+
//#region src/services/eventCommunicator.ts
|
|
4
|
+
var EventCommunicator = class {
|
|
5
|
+
logger;
|
|
6
|
+
queueProvider;
|
|
7
|
+
eventMessageHandler;
|
|
8
|
+
listenerList;
|
|
9
|
+
constructor(logger, queueProvider, eventMessageHandler, listenerList = []) {
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
this.queueProvider = queueProvider;
|
|
12
|
+
this.eventMessageHandler = eventMessageHandler;
|
|
13
|
+
this.listenerList = listenerList;
|
|
14
|
+
}
|
|
15
|
+
getMulticastListeners(queuesOptions, exchangesOptions, eventQueueMap = /* @__PURE__ */ new Map()) {
|
|
16
|
+
const eventListeners = collectEventBusListeners(this.listenerList);
|
|
17
|
+
const eventsHandler = this.eventMessageHandler.eventListenersMessageHandler.bind(this.eventMessageHandler, eventListeners);
|
|
18
|
+
const listeners = [];
|
|
19
|
+
for (const queueOptions of queuesOptions) {
|
|
20
|
+
const { name: queueName } = queueOptions;
|
|
21
|
+
const listener = {
|
|
22
|
+
eventNames: this.defineEventNamesByQueueName(queueName, eventQueueMap),
|
|
23
|
+
queueOptions,
|
|
24
|
+
exchangesOptions,
|
|
25
|
+
handler: eventsHandler
|
|
26
|
+
};
|
|
27
|
+
listeners.push(listener);
|
|
28
|
+
}
|
|
29
|
+
return listeners;
|
|
30
|
+
}
|
|
31
|
+
getUnicastListeners() {
|
|
32
|
+
const listeners = [];
|
|
33
|
+
const { queuesOptions, exchangesOptions } = this.queueProvider.getMessageBrokerServiceConfig();
|
|
34
|
+
const queuesOptionsMap = lodash.keyBy(queuesOptions, "name");
|
|
35
|
+
const exchangesOptionsMap = lodash.keyBy(exchangesOptions, "name");
|
|
36
|
+
for (const eventListener of this.listenerList) {
|
|
37
|
+
const { queueNames = [] } = eventListener;
|
|
38
|
+
for (const queueName of queueNames) {
|
|
39
|
+
const queueOptions = queuesOptionsMap[queueName];
|
|
40
|
+
if (!queueOptions) {
|
|
41
|
+
this.logger.error(`Not found queue options by name (${queueName}) for ${this.constructor.name} service`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const listener = {
|
|
45
|
+
queueOptions,
|
|
46
|
+
exchangesOptions: this.defineConsumerExchangesOptions(queueName, queueOptions.bindTo, exchangesOptionsMap),
|
|
47
|
+
handler: this.eventMessageHandler.eventListenerMessageHandler.bind(this.eventMessageHandler, eventListener)
|
|
48
|
+
};
|
|
49
|
+
listeners.push(listener);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return listeners;
|
|
53
|
+
}
|
|
54
|
+
defineConsumerExchangesOptions(queueName, bindTo = [], exchangesMap = {}) {
|
|
55
|
+
const exchangesOptions = [];
|
|
56
|
+
for (const bindOptions of bindTo) {
|
|
57
|
+
const { exchangeName } = bindOptions;
|
|
58
|
+
const exchangeOptions = exchangesMap[exchangeName];
|
|
59
|
+
if (!exchangeOptions) {
|
|
60
|
+
this.logger.error(`Not found exchange options by name (${exchangeName}) for ${this.constructor.name} service`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
exchangesOptions.push(exchangeOptions);
|
|
64
|
+
}
|
|
65
|
+
if (exchangesOptions.length === 0) this.logger.error(`Not found exchanges options for queue (${queueName}) for ${this.constructor.name} service`);
|
|
66
|
+
return exchangesOptions;
|
|
67
|
+
}
|
|
68
|
+
defineEventNamesByQueueName(queueName, eventQueueMap) {
|
|
69
|
+
if (eventQueueMap.size === 0) return this.listenerList.map(({ event }) => event);
|
|
70
|
+
const eventNames = [];
|
|
71
|
+
for (const [eventName, eventQueueName] of eventQueueMap) if (eventQueueName === queueName) eventNames.push(eventName);
|
|
72
|
+
return eventNames;
|
|
73
|
+
}
|
|
37
74
|
};
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
75
|
+
//#endregion
|
|
76
|
+
export { EventCommunicator };
|