@diia-inhouse/diia-queue 8.0.0 → 13.2.0

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
@@ -8,288 +8,158 @@ const node_crypto_1 = require("node:crypto");
8
8
  const node_events_1 = require("node:events");
9
9
  const lodash_1 = require("lodash");
10
10
  const p_timeout_1 = __importDefault(require("p-timeout"));
11
+ const errors_1 = require("@diia-inhouse/errors");
12
+ const constants_1 = __importDefault(require("../../constants"));
13
+ const interfaces_1 = require("../../interfaces");
11
14
  const rabbitmq_1 = require("../../interfaces/providers/rabbitmq");
12
- const amqpPublisher_1 = require("../../interfaces/providers/rabbitmq/amqpPublisher");
13
- const queueConfig_1 = require("../../interfaces/queueConfig");
15
+ const metrics_1 = __importDefault(require("../../services/metrics"));
16
+ const amqpAsserter_1 = require("./amqpAsserter");
14
17
  const amqpConnection_1 = require("./amqpConnection");
15
18
  const amqpListener_1 = require("./amqpListener");
16
- const amqpPublisher_2 = require("./amqpPublisher");
19
+ const amqpPublisher_1 = require("./amqpPublisher");
17
20
  // eslint-disable-next-line unicorn/prefer-event-target
18
21
  class RabbitMQProvider extends node_events_1.EventEmitter {
19
- serviceName;
22
+ systemServiceName;
20
23
  rabbitmqConfig;
21
24
  serviceConfig;
22
25
  topicsConfig;
23
26
  portalEvents;
24
- internalEvents;
25
- type;
26
27
  logger;
28
+ metrics;
27
29
  asyncLocalStorage;
28
30
  queuesConfig;
31
+ messageBrokerServiceConfig;
29
32
  initializingLock;
30
33
  listener;
31
34
  publisher;
35
+ asserter;
32
36
  connectionList = {
33
37
  [rabbitmq_1.ConnectionClientType.Listener]: {},
38
+ [rabbitmq_1.ConnectionClientType.Asserter]: {},
34
39
  [rabbitmq_1.ConnectionClientType.Publisher]: {},
35
40
  };
36
- projectName = 'diia';
37
- portalName = 'portal';
38
- eventNameToTopicMap = new Map();
39
- externalPublishEventsSet;
40
- externalSubscribeEventsSet;
41
- assertExternalExchanges;
42
- constructor(serviceName, rabbitmqConfig, serviceConfig, topicsConfig, portalEvents, internalEvents, type, logger, asyncLocalStorage, queuesConfig) {
41
+ publisherIsNotInitializedErrorMsg = 'Publisher is not initialized';
42
+ rabbitMQMetricsService;
43
+ constructor(systemServiceName, rabbitmqConfig, serviceConfig, topicsConfig, portalEvents, logger, metrics, asyncLocalStorage, queuesConfig, messageBrokerServiceConfig) {
43
44
  super();
44
- this.serviceName = serviceName;
45
+ this.systemServiceName = systemServiceName;
45
46
  this.rabbitmqConfig = rabbitmqConfig;
46
47
  this.serviceConfig = serviceConfig;
47
48
  this.topicsConfig = topicsConfig;
48
49
  this.portalEvents = portalEvents;
49
- this.internalEvents = internalEvents;
50
- this.type = type;
51
50
  this.logger = logger;
51
+ this.metrics = metrics;
52
52
  this.asyncLocalStorage = asyncLocalStorage;
53
53
  this.queuesConfig = queuesConfig;
54
- for (const topicName of Object.keys(this.topicsConfig)) {
55
- for (const eventName of this.topicsConfig[topicName].events) {
56
- this.eventNameToTopicMap.set(eventName, topicName);
57
- }
58
- }
59
- if (this.type === queueConfig_1.QueueConfigType.External) {
60
- const config = this.serviceConfig;
61
- this.externalPublishEventsSet = new Set(config?.publish);
62
- this.externalSubscribeEventsSet = new Set(config?.subscribe);
63
- this.assertExternalExchanges = rabbitmqConfig.assertExchanges;
64
- }
65
- }
66
- getServiceName() {
67
- return this.serviceName;
54
+ this.messageBrokerServiceConfig = messageBrokerServiceConfig;
55
+ this.rabbitMQMetricsService = new metrics_1.default(this.metrics);
68
56
  }
69
57
  getConfig() {
70
- return this.rabbitmqConfig;
58
+ return {
59
+ topics: this.topicsConfig,
60
+ rabbit: this.rabbitmqConfig,
61
+ service: this.serviceConfig,
62
+ portalEvents: this.portalEvents,
63
+ queues: this.queuesConfig ?? {},
64
+ };
71
65
  }
72
- async init(listenerOptions) {
66
+ getMessageBrokerServiceConfig() {
67
+ if (!this.messageBrokerServiceConfig) {
68
+ return {
69
+ queuesOptions: [],
70
+ exchangesOptions: [],
71
+ };
72
+ }
73
+ return this.messageBrokerServiceConfig;
74
+ }
75
+ async init(config = interfaces_1.emptyMessageBrokerServiceConfig) {
76
+ const { queuesOptions, exchangesOptions } = config;
73
77
  if (this.initializingLock) {
74
78
  return await this.initializingLock;
75
79
  }
76
- this.initializingLock = new Promise((resolve) => Promise.all([this.setListener(listenerOptions), this.setPublisher()]).then(() => resolve()));
80
+ const tasks = [this.setPublisher(), this.setAsserter(queuesOptions, exchangesOptions)];
81
+ if (this.rabbitmqConfig.consumerEnabled !== false && queuesOptions.length > 0) {
82
+ tasks.push(this.setListener(queuesOptions));
83
+ }
84
+ this.initializingLock = Promise.all(tasks).then(() => this.logger.info(`RabbitMQ provider has been initialized by options`, { queuesOptions, exchangesOptions }));
77
85
  await this.initializingLock;
78
86
  this.emit('initialized');
79
87
  }
80
- async subscribe(subscriptionName, messageHandler, options) {
81
- if (!this.serviceConfig.subscribe?.includes(subscriptionName)) {
82
- this.logger.error(`Subscription [${subscriptionName}] is not related to the service [${this.serviceName}]`);
83
- return false;
84
- }
85
- const queueName = this.makeQueueName(subscriptionName, options);
86
- await this.init(options?.listener);
87
- await this.listener.listenQueue(queueName, messageHandler);
88
- if ((0, lodash_1.isEmpty)(this.queuesConfig[subscriptionName].topics)) {
89
- this.logger.info(`Can't find topics for subscription [${subscriptionName}]`);
90
- return true;
91
- }
92
- const routingKey = options ? options.routingKey : undefined;
93
- await Promise.all(this.queuesConfig[subscriptionName].topics.map((topic) => this.checkAndBindToExchange(topic, queueName, routingKey)));
88
+ async subscribe(queueName, messageHandler) {
89
+ await this.listener?.listenQueue(queueName, messageHandler);
94
90
  return true;
95
91
  }
96
- async publish(eventName, message, options) {
97
- if (!this.internalEvents.includes(eventName)) {
98
- this.logger.error(`Event [${eventName}] is not implemented`);
99
- return false;
100
- }
101
- const exchangeName = this.findTopicNameByEventName(eventName);
102
- if (!exchangeName) {
103
- this.logger.error(`Can't find topic name by event [${eventName}]`);
104
- return false;
105
- }
106
- if (!this.serviceConfig.publish?.includes(exchangeName)) {
107
- this.logger.error(`Event [${eventName}] is not allowed to publish by service [${this.serviceName}]`);
108
- return false;
109
- }
110
- const { publishTimeout = Infinity, throwOnPublishTimeout = true, routingKey } = options || {};
111
- // eslint-disable-next-line no-async-promise-executor
112
- const publishTask = new Promise(async (resolve, reject) => {
113
- try {
114
- await this.init();
115
- }
116
- catch (err) {
117
- return reject(err);
118
- }
119
- try {
120
- await this.publisher.checkExchange(exchangeName);
121
- }
122
- catch {
123
- return resolve(false);
124
- }
125
- try {
126
- const publishResult = await this.publisher.publishToExchange({
127
- eventName,
128
- message,
129
- exchangeName,
130
- routingKey,
131
- headers: this.preparePublisherHeaders(),
132
- });
133
- return resolve(publishResult);
134
- }
135
- catch (err) {
136
- return reject(err);
92
+ async unsubscribe(queueName) {
93
+ await this.listener?.cancelQueue(queueName);
94
+ }
95
+ async publish(message, exchangeName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY, options) {
96
+ const { publishTimeout = Infinity, throwOnPublishTimeout = true, delay } = options || {};
97
+ const publishTask = async () => {
98
+ const headers = this.preparePublisherHeaders(delay);
99
+ if (!this.publisher) {
100
+ throw new Error(this.publisherIsNotInitializedErrorMsg);
137
101
  }
138
- });
139
- const timeoutMsg = `Internal event [${eventName}] publish timeout exceed`;
102
+ return await this.publisher?.publishToExchange(exchangeName, message, headers, routingKey);
103
+ };
104
+ const timeoutMsg = `Publishing message to ${exchangeName} exchange with ${routingKey} routing key timeout exceed`;
140
105
  if (throwOnPublishTimeout) {
141
- return await (0, p_timeout_1.default)(publishTask, publishTimeout, timeoutMsg);
106
+ return await (0, p_timeout_1.default)(publishTask(), publishTimeout, timeoutMsg);
142
107
  }
143
- return await (0, p_timeout_1.default)(publishTask, publishTimeout, () => {
108
+ return await (0, p_timeout_1.default)(publishTask(), publishTimeout, () => {
144
109
  this.logger.error(timeoutMsg, { publishTimeout });
145
- return false;
110
+ throw new errors_1.InternalServerError(timeoutMsg);
146
111
  });
147
112
  }
148
- async subscribeTask(queueName, messageHandler, options = {}) {
149
- const { listener, delayed } = options;
150
- this.logger.info('Subscribing to the task', { queueName, options });
151
- await this.init(listener);
152
- await this.listener.listenQueue(queueName, messageHandler);
153
- await (delayed
154
- ? this.publisher.checkExchange(queueName, amqpPublisher_1.ExchangeType.XDelayedMessage, {
155
- arguments: { 'x-delayed-type': this.publisher.defaultExchangeType },
156
- })
157
- : this.publisher.checkExchange(queueName));
158
- await this.listener.bindQueueToExchange(queueName, queueName);
159
- return true;
160
- }
161
- async publishTask(queueName, message, delay) {
162
- await this.init();
163
- const params = {
164
- eventName: queueName,
165
- message,
166
- exchangeName: queueName,
167
- headers: this.preparePublisherHeaders(),
168
- };
169
- if (delay) {
170
- params.headers['x-delay'] = delay;
171
- }
172
- return await this.publisher.publishToExchange(params);
173
- }
174
- async subscribeExternal(messageHandler, options) {
175
- await this.init(options.listener);
176
- const config = this.serviceConfig;
177
- const publishEvents = config?.publish || [];
178
- const subscribeEvents = config?.subscribe || [];
179
- if (publishEvents.length === 0 && subscribeEvents.length === 0) {
180
- this.logger.info('No one external events to listen');
181
- return;
182
- }
183
- const responseRoutingKeyPrefix = this.rabbitmqConfig.custom?.responseRoutingKeyPrefix;
184
- const queueByEvent = new Map();
185
- for (const externalEvent of publishEvents) {
186
- queueByEvent.set(externalEvent, this.makeExternalResQueueName(externalEvent, responseRoutingKeyPrefix));
187
- }
188
- for (const externalEvent of subscribeEvents) {
189
- queueByEvent.set(externalEvent, this.makeExternalReqQueueName(externalEvent, responseRoutingKeyPrefix));
190
- }
191
- const bindTasks = [...queueByEvent.entries()].map(([event, queueName]) => this.bindQueueToExternalExchange(queueName, event, messageHandler));
192
- await Promise.all(bindTasks);
193
- return true;
194
- }
195
- async publishExternalDirect(eventName, message, topic, options) {
196
- await this.init();
197
- const selectedTopic = topic ?? this.findTopicNameByEventName(eventName) ?? 'DirectRPC';
198
- const exchangeName = this.prepareExternalTopicName(selectedTopic);
199
- const routingKey = this.prepareExternalReqRoutingKey(eventName);
113
+ async publishExternalDirect(message, exchangeName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY, options) {
200
114
  const headers = this.preparePublisherHeaders();
201
- return await this.publisher.publishToExchangeDirect({
202
- eventName,
203
- message,
204
- exchangeName,
205
- routingKey,
206
- headers,
207
- options,
208
- });
209
- }
210
- async publishExternal(eventName, message, options) {
211
- const topicName = this.findTopicNameByEventName(eventName);
212
- if (!topicName) {
213
- this.logger.error(`Can't find external topic name for service [${this.serviceName}] and event [${eventName}]`);
214
- return false;
215
- }
216
- const { publishTimeout = Infinity, throwOnPublishTimeout = true } = options || {};
217
- // eslint-disable-next-line no-async-promise-executor
218
- const publishTask = new Promise(async (resolve, reject) => {
219
- try {
220
- await this.init();
221
- }
222
- catch (err) {
223
- return reject(err);
224
- }
225
- const headers = this.preparePublisherHeaders();
226
- const exchangeName = this.prepareExternalTopicName(topicName);
227
- const publishToExchangeParams = {
228
- eventName,
229
- message,
230
- exchangeName,
231
- headers,
232
- options,
233
- };
234
- if (this.externalPublishEventsSet.has(eventName)) {
235
- const { responseRoutingKeyPrefix } = this.rabbitmqConfig.custom || {};
236
- publishToExchangeParams.routingKey = this.prepareExternalReqRoutingKey(eventName);
237
- publishToExchangeParams.responseRoutingKey =
238
- responseRoutingKeyPrefix && this.makeExternalResQueueName(eventName, responseRoutingKeyPrefix);
239
- }
240
- else if (this.externalSubscribeEventsSet.has(eventName)) {
241
- publishToExchangeParams.routingKey = this.prepareExternalResRoutingKey(eventName);
242
- }
243
- else {
244
- this.logger.error(`Can't find event in service config: [${eventName}]`);
245
- return resolve(false);
246
- }
247
- try {
248
- const publishResult = await this.publisher.publishToExchange(publishToExchangeParams);
249
- return resolve(publishResult);
250
- }
251
- catch (err) {
252
- return reject(err);
253
- }
254
- });
255
- const timeoutMsg = `External event [${eventName}] publish timeout exceed`;
256
- if (throwOnPublishTimeout) {
257
- return await (0, p_timeout_1.default)(publishTask, publishTimeout, timeoutMsg);
115
+ if (!this.publisher) {
116
+ throw new Error(this.publisherIsNotInitializedErrorMsg);
258
117
  }
259
- return await (0, p_timeout_1.default)(publishTask, publishTimeout, () => {
260
- this.logger.error(timeoutMsg, { publishTimeout });
261
- return false;
262
- });
118
+ return await this.publisher?.publishToExchangeDirect(exchangeName, message, headers, routingKey, options?.timeout);
263
119
  }
264
120
  getStatus() {
265
121
  return {
266
- listener: this.listener?.getStatus() || rabbitmq_1.ConnectionStatus.Down,
267
- publisher: this.publisher?.getStatus() || rabbitmq_1.ConnectionStatus.Down,
122
+ ...(this.listener ? { listener: this.listener.getStatus() } : {}),
123
+ publisher: this.publisher?.getStatus() ?? interfaces_1.ConnectionStatus.Down,
268
124
  };
269
125
  }
270
- preparePublisherHeaders() {
271
- const logData = this.asyncLocalStorage?.getStore()?.logData ?? {};
272
- const traceId = logData?.traceId ?? (0, node_crypto_1.randomUUID)();
273
- const serviceCode = logData?.serviceCode;
274
- return { traceId, serviceCode };
126
+ async makeAMQPConnection(client) {
127
+ return new amqpConnection_1.AmqpConnection(this.rabbitmqConfig.connection, this.logger, this.rabbitmqConfig.reconnectOptions, (0, lodash_1.merge)({
128
+ clientProperties: {
129
+ connectionClientType: client,
130
+ },
131
+ }, this.rabbitmqConfig.socketOptions));
132
+ }
133
+ async makeAMQPListener(queuesOptions) {
134
+ const connection = await this.getConnection(rabbitmq_1.ConnectionClientType.Listener);
135
+ return new amqpListener_1.AmqpListener(connection, this.logger, this.rabbitMQMetricsService, queuesOptions, this.systemServiceName);
136
+ }
137
+ async makeAMQPAsserter() {
138
+ const connection = await this.getConnection(rabbitmq_1.ConnectionClientType.Asserter);
139
+ return new amqpAsserter_1.AmqpAsserter(connection, this.logger, this.rabbitmqConfig.declareOptions);
275
140
  }
276
- findTopicNameByEventName(eventName) {
277
- return this.eventNameToTopicMap.get(eventName);
141
+ async makeAMQPPublisher() {
142
+ const connection = await this.getConnection(rabbitmq_1.ConnectionClientType.Publisher);
143
+ return new amqpPublisher_1.AmqpPublisher(connection, this.logger, this.rabbitMQMetricsService, this.systemServiceName);
278
144
  }
279
- async setListener(options = {}) {
280
- options.queueOptions ??= this.rabbitmqConfig.listenerOptions?.queueOptions;
145
+ async setListener(queuesOptions) {
281
146
  if (!this.listener) {
282
- const connection = await this.getConnection(rabbitmq_1.ConnectionClientType.Listener);
283
- this.listener = new amqpListener_1.AmqpListener(connection, this.logger, options);
284
- await this.listener.init();
147
+ this.listener = await this.makeAMQPListener(queuesOptions);
148
+ await this.listener?.init();
285
149
  }
286
150
  return this.listener;
287
151
  }
152
+ async setAsserter(queuesOptions, exchangesOptions) {
153
+ if (!this.asserter) {
154
+ this.asserter = await this.makeAMQPAsserter();
155
+ await this.asserter.init(exchangesOptions, queuesOptions);
156
+ }
157
+ return this.asserter;
158
+ }
288
159
  async setPublisher() {
289
160
  if (!this.publisher) {
290
- const connection = await this.getConnection(rabbitmq_1.ConnectionClientType.Publisher);
291
- this.publisher = new amqpPublisher_2.AmqpPublisher(connection, this.logger);
292
- await this.publisher.init();
161
+ this.publisher = await this.makeAMQPPublisher();
162
+ await this.publisher?.init();
293
163
  }
294
164
  return this.publisher;
295
165
  }
@@ -297,71 +167,20 @@ class RabbitMQProvider extends node_events_1.EventEmitter {
297
167
  if (this.connectionList[client].lock) {
298
168
  return await this.connectionList[client].lock;
299
169
  }
300
- const connection = new amqpConnection_1.AmqpConnection(this.rabbitmqConfig.connection, this.logger, this.rabbitmqConfig.reconnectOptions, (0, lodash_1.merge)({
301
- clientProperties: {
302
- connectionClientType: client,
303
- },
304
- }, this.rabbitmqConfig.socketOptions));
170
+ const connection = await this.makeAMQPConnection(client);
305
171
  this.connectionList[client].lock = new Promise((resolve) => connection.connect().then(() => resolve(connection)));
306
172
  return await this.connectionList[client].lock;
307
173
  }
308
- async checkAndBindToExchange(topic, queueName, routingKey) {
309
- // eslint-disable-next-line no-async-promise-executor
310
- return await new Promise(async (resolve) => {
311
- // queue can't be bind to exchange when no exchange
312
- await this.publisher.checkExchange(topic);
313
- await this.listener.bindQueueToExchange(queueName, topic, routingKey);
314
- return resolve();
315
- });
316
- }
317
- async bindQueueToExternalExchange(queueName, eventName, messageHandler) {
318
- const topicName = this.findTopicNameByEventName(eventName);
319
- if (!topicName) {
320
- this.logger.error(`Can't find external topic name for service [${this.serviceName}] and event [${eventName}]`);
321
- return;
322
- }
323
- const externalTopicName = this.prepareExternalTopicName(topicName);
324
- if (this.assertExternalExchanges) {
325
- await this.publisher.checkExchange(externalTopicName);
326
- }
327
- await this.listener.listenQueue(queueName, messageHandler);
328
- await this.listener.bindQueueToExchange(queueName, externalTopicName, queueName);
329
- }
330
- makeQueueName(subscriptionName, options) {
331
- let queueName = subscriptionName;
332
- if (options && options.queueSuffix) {
333
- queueName = `${subscriptionName}_${options.queueSuffix}`;
334
- }
335
- return queueName;
336
- }
337
- makeExternalResQueueName(eventName, prefix) {
338
- const result = `queue.${this.projectName}.${eventName}.res`;
339
- if (prefix) {
340
- return `${prefix}.${result}`;
341
- }
342
- return result;
343
- }
344
- makeExternalReqQueueName(eventName, prefix) {
345
- const result = `${this.prepareExternalQueuePrefix(eventName)}.${eventName}.req`;
346
- if (prefix) {
347
- return `${prefix}.${result}`;
348
- }
349
- return result;
350
- }
351
- prepareExternalTopicName(topicName) {
352
- return `TopicExternal${topicName}`;
353
- }
354
- prepareExternalReqRoutingKey(eventName) {
355
- return `queue.${this.projectName}.${eventName}.req`;
356
- }
357
- prepareExternalResRoutingKey(eventName) {
358
- return `${this.prepareExternalQueuePrefix(eventName)}.${eventName}.res`;
359
- }
360
- prepareExternalQueuePrefix(event) {
361
- if (this.portalEvents.includes(event)) {
362
- return `queue.${this.portalName}`;
363
- }
364
- return `queue.${this.projectName}`;
174
+ preparePublisherHeaders(delay) {
175
+ const store = this.asyncLocalStorage?.getStore();
176
+ const logData = store?.logData ?? {};
177
+ const traceId = logData?.traceId ?? (0, node_crypto_1.randomUUID)();
178
+ const serviceCode = logData?.serviceCode;
179
+ return {
180
+ traceId,
181
+ serviceCode,
182
+ ...(delay ? { 'x-delay': delay } : {}),
183
+ };
365
184
  }
366
185
  }
367
186
  exports.RabbitMQProvider = RabbitMQProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/index.ts"],"names":[],"mappings":"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"}