@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.
Files changed (104) hide show
  1. package/LICENCE.md +59 -59
  2. package/dist/constants.js +3 -0
  3. package/dist/constants.js.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/interfaces/index.js +6 -4
  7. package/dist/interfaces/index.js.map +1 -1
  8. package/dist/interfaces/messageBrokerServiceConfig.js +26 -0
  9. package/dist/interfaces/messageBrokerServiceConfig.js.map +1 -0
  10. package/dist/interfaces/metrics/index.js +14 -0
  11. package/dist/interfaces/metrics/index.js.map +1 -1
  12. package/dist/interfaces/providers/rabbitmq/amqpConnection.js +4 -1
  13. package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +1 -1
  14. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +1 -9
  15. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +1 -1
  16. package/dist/interfaces/providers/rabbitmq/index.js +41 -17
  17. package/dist/interfaces/providers/rabbitmq/index.js.map +1 -1
  18. package/dist/interfaces/queueStatus.js.map +1 -1
  19. package/dist/interfaces/{eventBus.js → services/eventMessageHandler.js} +1 -1
  20. package/dist/interfaces/services/eventMessageHandler.js.map +1 -0
  21. package/dist/metrics/index.js +1 -2
  22. package/dist/metrics/index.js.map +1 -1
  23. package/dist/providers/index.js +22 -0
  24. package/dist/providers/index.js.map +1 -0
  25. package/dist/providers/rabbitmq/amqpAsserter.js +417 -0
  26. package/dist/providers/rabbitmq/amqpAsserter.js.map +1 -0
  27. package/dist/providers/rabbitmq/amqpConnection.js +47 -25
  28. package/dist/providers/rabbitmq/amqpConnection.js.map +1 -1
  29. package/dist/providers/rabbitmq/amqpListener.js +167 -113
  30. package/dist/providers/rabbitmq/amqpListener.js.map +1 -1
  31. package/dist/providers/rabbitmq/amqpPublisher.js +145 -96
  32. package/dist/providers/rabbitmq/amqpPublisher.js.map +1 -1
  33. package/dist/providers/rabbitmq/index.js +104 -285
  34. package/dist/providers/rabbitmq/index.js.map +1 -1
  35. package/dist/services/communicator.js +187 -0
  36. package/dist/services/communicator.js.map +1 -0
  37. package/dist/services/eventBus.js +41 -46
  38. package/dist/services/eventBus.js.map +1 -1
  39. package/dist/services/eventCommunicator.js +125 -0
  40. package/dist/services/eventCommunicator.js.map +1 -0
  41. package/dist/services/eventMessageHandler.js +73 -89
  42. package/dist/services/eventMessageHandler.js.map +1 -1
  43. package/dist/services/externalCommunicator.js +10 -103
  44. package/dist/services/externalCommunicator.js.map +1 -1
  45. package/dist/services/externalEventBus.js +147 -55
  46. package/dist/services/externalEventBus.js.map +1 -1
  47. package/dist/services/index.js +1 -1
  48. package/dist/services/index.js.map +1 -1
  49. package/dist/services/metrics.js +49 -0
  50. package/dist/services/metrics.js.map +1 -0
  51. package/dist/services/optionsBuilder.js +59 -0
  52. package/dist/services/optionsBuilder.js.map +1 -0
  53. package/dist/services/queue.js +63 -26
  54. package/dist/services/queue.js.map +1 -1
  55. package/dist/services/scheduledTask.js +52 -48
  56. package/dist/services/scheduledTask.js.map +1 -1
  57. package/dist/services/task.js +149 -28
  58. package/dist/services/task.js.map +1 -1
  59. package/dist/types/constants.d.ts +3 -0
  60. package/dist/types/index.d.ts +1 -1
  61. package/dist/types/interfaces/deps.d.ts +3 -2
  62. package/dist/types/interfaces/externalCommunicator.d.ts +5 -12
  63. package/dist/types/interfaces/index.d.ts +70 -20
  64. package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +79 -0
  65. package/dist/types/interfaces/messageHandler.d.ts +1 -1
  66. package/dist/types/interfaces/metrics/index.d.ts +13 -0
  67. package/dist/types/interfaces/options.d.ts +29 -4
  68. package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +3 -0
  69. package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +9 -17
  70. package/dist/types/interfaces/providers/rabbitmq/index.d.ts +71 -7
  71. package/dist/types/interfaces/queueConfig/configs.d.ts +19 -11
  72. package/dist/types/interfaces/queueStatus.d.ts +3 -1
  73. package/dist/types/interfaces/services/eventMessageHandler.d.ts +5 -0
  74. package/dist/types/metrics/index.d.ts +1 -2
  75. package/dist/types/providers/index.d.ts +5 -0
  76. package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +49 -0
  77. package/dist/types/providers/rabbitmq/amqpConnection.d.ts +3 -7
  78. package/dist/types/providers/rabbitmq/amqpListener.d.ts +26 -11
  79. package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +25 -16
  80. package/dist/types/providers/rabbitmq/index.d.ts +33 -40
  81. package/dist/types/services/communicator.d.ts +57 -0
  82. package/dist/types/services/eventBus.d.ts +15 -14
  83. package/dist/types/services/eventCommunicator.d.ts +15 -0
  84. package/dist/types/services/eventMessageHandler.d.ts +9 -11
  85. package/dist/types/services/externalCommunicator.d.ts +6 -19
  86. package/dist/types/services/externalEventBus.d.ts +28 -13
  87. package/dist/types/services/index.d.ts +1 -1
  88. package/dist/types/services/metrics.d.ts +11 -0
  89. package/dist/types/services/optionsBuilder.d.ts +10 -0
  90. package/dist/types/services/queue.d.ts +14 -9
  91. package/dist/types/services/scheduledTask.d.ts +22 -14
  92. package/dist/types/services/task.d.ts +21 -11
  93. package/dist/types/utils.d.ts +2 -2
  94. package/dist/utils.js +5 -2
  95. package/dist/utils.js.map +1 -1
  96. package/package.json +34 -41
  97. package/dist/interfaces/eventBus.js.map +0 -1
  98. package/dist/interfaces/providers/rabbitmq/amqpListener.js +0 -3
  99. package/dist/interfaces/providers/rabbitmq/amqpListener.js.map +0 -1
  100. package/dist/services/externalCommunicatorChannel.js +0 -31
  101. package/dist/services/externalCommunicatorChannel.js.map +0 -1
  102. package/dist/types/interfaces/eventBus.d.ts +0 -19
  103. package/dist/types/interfaces/providers/rabbitmq/amqpListener.d.ts +0 -7
  104. 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 __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;
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 Utils = __importStar(require("../utils"));
28
- class EventBus {
29
- queueProvider;
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
- constructor(queueProvider, eventListenerList, eventMessageHandler, logger, queueName) {
35
- this.queueProvider = queueProvider;
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
- async onInit() {
42
- await this.queueProvider.init?.();
29
+ getProducerExchangesOptions() {
43
30
  if (!this.queueName) {
44
- return;
31
+ return [];
45
32
  }
46
- const config = this.queueProvider.getConfig();
47
- const eventListeners = Utils.collectEventBusListeners(this.eventListenerList);
48
- await this.subscribe(this.queueName, this.eventMessageHandler.eventListenersMessageHandler.bind(this.eventMessageHandler, eventListeners), {
49
- listener: config.listenerOptions,
50
- });
51
- for (const listener of this.eventListenerList) {
52
- this.logger.info(`Event listener [${listener.event}] initialized successfully`);
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
- async subscribe(subscriptionName, messageHandler, options) {
56
- return await this.queueProvider.subscribe(subscriptionName, messageHandler, options);
57
- }
58
- async publish(eventName, message, options) {
59
- return await this.queueProvider.publish(eventName, message, options);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,gDAAiC;AAIjC,MAAa,QAAQ;IAEI;IACA;IACA;IAEA;IACA;IANrB,YACqB,aAA+B,EAC/B,iBAAqC,EACrC,mBAAwC,EAExC,MAAc,EACd,SAAgC;QALhC,kBAAa,GAAb,aAAa,CAAkB;QAC/B,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,wBAAmB,GAAnB,mBAAmB,CAAqB;QAExC,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAuB;IAClD,CAAC;IAEJ,KAAK,CAAC,MAAM;QACR,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAA;QAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE7E,MAAM,IAAI,CAAC,SAAS,CAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,EACpG;YACI,QAAQ,EAAE,MAAM,CAAC,eAAe;SACnC,CACJ,CAAA;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,KAAK,4BAA4B,CAAC,CAAA;QACnF,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,gBAA2B,EAAE,cAA8B,EAAE,OAA0B;QACnG,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAoB,EAAE,OAAuB,EAAE,OAAqC;QAC9F,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACxE,CAAC;CACJ;AAvCD,4BAuCC"}
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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"}