@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
@@ -0,0 +1,417 @@
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
+ exports.AmqpAsserter = void 0;
7
+ const promises_1 = require("node:fs/promises");
8
+ const constants_1 = __importDefault(require("../../constants"));
9
+ const interfaces_1 = require("../../interfaces");
10
+ const messageBrokerServiceConfig_1 = require("../../interfaces/messageBrokerServiceConfig");
11
+ class AmqpAsserter {
12
+ connection;
13
+ logger;
14
+ declareOptions;
15
+ static PrefixAlternate = 'Alternate';
16
+ defaultExchangeType = messageBrokerServiceConfig_1.ExchangeType.Topic;
17
+ defaultQueueOptions = { durable: true };
18
+ defaultExchangeOptions = {
19
+ durable: true,
20
+ autoDelete: false,
21
+ };
22
+ defaultDeclareOptions = {
23
+ assertQueues: true,
24
+ assertExchanges: true,
25
+ };
26
+ channel;
27
+ channelName = 'asserterChannel';
28
+ constructor(connection, logger, declareOptions = {}) {
29
+ this.connection = connection;
30
+ this.logger = logger;
31
+ this.declareOptions = declareOptions;
32
+ declareOptions.assertQueues ??= this.defaultDeclareOptions.assertQueues;
33
+ declareOptions.assertExchanges ??= this.defaultDeclareOptions.assertExchanges;
34
+ }
35
+ async init(exchangesOptions = [], queuesOptions = []) {
36
+ if (!this.channel) {
37
+ await this.initChannel();
38
+ this.connection.on(interfaces_1.AmqpConnectionEventNames.Ready, async () => {
39
+ // in case if reconnect happened
40
+ await this.initChannel();
41
+ });
42
+ }
43
+ await this.assertExchanges(exchangesOptions);
44
+ await this.declareQueues(queuesOptions, exchangesOptions);
45
+ }
46
+ async declareQueuesByJSON(declarationConfigPath) {
47
+ const { exchangesOptions, queuesOptions } = await this.readConfig(declarationConfigPath);
48
+ await this.declareQueues(queuesOptions, exchangesOptions);
49
+ }
50
+ async declareQueues(queuesOptions = [], exchangesOptions = []) {
51
+ for await (const queueOptions of queuesOptions) {
52
+ const { name: queueName, redeclareOptions: { redeclare } = {} } = queueOptions;
53
+ if (redeclare) {
54
+ try {
55
+ await this.redeclareQueue(queueOptions, exchangesOptions);
56
+ }
57
+ catch (err) {
58
+ this.logger.error(`Error while redeclaring queue ${queueName}`, { err });
59
+ throw err;
60
+ }
61
+ }
62
+ else {
63
+ await this.assertQueue(queueOptions);
64
+ }
65
+ }
66
+ }
67
+ async redeclareQueue(queueOptions, exchangesOptions) {
68
+ const { bindTo = [], redeclareOptions = {} } = queueOptions;
69
+ const { redeclare } = redeclareOptions;
70
+ if (!redeclare) {
71
+ return false;
72
+ }
73
+ // prepare redeclare queue options
74
+ const redeclareQueueOptions = this.prepareRedeclareQueueOptions(queueOptions, redeclareOptions);
75
+ const { name: queueName } = redeclareQueueOptions;
76
+ this.logger.info(`Queue ${queueName} is being to be redeclared`, { options: redeclareQueueOptions });
77
+ // assert alternate exchanges
78
+ const alternateExchangesOptions = await this.assertAlternateExchanges(redeclareQueueOptions, exchangesOptions);
79
+ // assert alternate queue
80
+ const { name: alternateQueueName } = await this.assertAlternateQueue(redeclareQueueOptions, alternateExchangesOptions);
81
+ // unbind old queue
82
+ await this.unbindQueueFromExchanges({
83
+ bindTo: [],
84
+ name: queueName,
85
+ unbindFrom: bindTo.map(({ exchangeName, routingKey }) => ({
86
+ routingKey,
87
+ exchangeName,
88
+ unbind: true,
89
+ })),
90
+ });
91
+ // assert temporary queue
92
+ const { name: tempQueueName, bindTo: tempBindTo } = await this.assertTemporaryQueue(redeclareQueueOptions);
93
+ // transfer messages from old queue to temporary queue
94
+ await this.transferMessageBetweenQueues(queueName, tempQueueName);
95
+ try {
96
+ // delete old queue
97
+ await this.deleteQueue(queueName);
98
+ }
99
+ catch (err) {
100
+ if (!(err instanceof Error)) {
101
+ throw err;
102
+ }
103
+ if (err.message.includes('NOT_FOUND - no queue')) {
104
+ await this.deleteQueues([alternateQueueName, tempQueueName]);
105
+ await this.deleteExchanges(Object.values(alternateExchangesOptions));
106
+ }
107
+ return false;
108
+ }
109
+ // assert new queue
110
+ await this.assertQueue(redeclareQueueOptions);
111
+ // unbind temp queue
112
+ await this.unbindQueueFromExchanges({
113
+ bindTo: [],
114
+ name: tempQueueName,
115
+ unbindFrom: tempBindTo.map(({ exchangeName, routingKey }) => ({
116
+ routingKey,
117
+ exchangeName,
118
+ unbind: true,
119
+ })),
120
+ });
121
+ // transfer messages from temporary queue to new queue
122
+ await this.transferMessageBetweenQueues(tempQueueName, queueName);
123
+ // transfer messages from alternate queue to new queue
124
+ await this.transferMessageBetweenQueues(alternateQueueName, queueName);
125
+ // delete temporary queue
126
+ await this.deleteQueue(tempQueueName);
127
+ // delete alternate queue
128
+ await this.deleteQueue(alternateQueueName);
129
+ // delete alternate exchanges
130
+ await this.deleteExchanges(Object.values(alternateExchangesOptions));
131
+ this.logger.info(`Queue ${queueName} has been redeclared successfully`);
132
+ return true;
133
+ }
134
+ async transferMessageBetweenQueues(sourceQueueName, destinationQueueName) {
135
+ this.logger.info(`Transferring messages from ${sourceQueueName} to ${destinationQueueName} is being started`);
136
+ let messageCount = 0;
137
+ const channel = await this.connection.createChannel();
138
+ while (true) {
139
+ let message;
140
+ try {
141
+ const gotMessage = await channel.get(sourceQueueName, { noAck: true });
142
+ if (!gotMessage) {
143
+ break;
144
+ }
145
+ message = gotMessage;
146
+ messageCount += 1;
147
+ }
148
+ catch (err) {
149
+ this.logger.error(`Error while getting messages from ${sourceQueueName}`, { err, messageCount });
150
+ throw err;
151
+ }
152
+ try {
153
+ channel.sendToQueue(destinationQueueName, message.content, message.properties);
154
+ this.logger.debug(`Message ${messageCount} has been transferred from ${sourceQueueName} to ${destinationQueueName}`);
155
+ }
156
+ catch (err) {
157
+ this.logger.error(`Error while publishing messages to ${destinationQueueName}`, { err, messageCount });
158
+ throw err;
159
+ }
160
+ }
161
+ await channel.close();
162
+ this.logger.info(`Transferring messages from ${sourceQueueName} to ${destinationQueueName} has been finished`, {
163
+ messageCount,
164
+ });
165
+ }
166
+ async deleteExchanges(exchangesOptions) {
167
+ const result = {};
168
+ for await (const exchangeOptions of exchangesOptions) {
169
+ const { name: exchangeName } = exchangeOptions;
170
+ result[exchangeName] = await this.deleteExchange(exchangeName);
171
+ }
172
+ return result;
173
+ }
174
+ async deleteExchange(exchangeName) {
175
+ try {
176
+ const result = await this.channel?.deleteExchange(exchangeName);
177
+ this.logger.info(`Exchange ${exchangeName} has been deleted`);
178
+ return result;
179
+ }
180
+ catch (err) {
181
+ this.logger.error(`Error while deleting an exchange`, { exchangeName, err });
182
+ throw err;
183
+ }
184
+ }
185
+ async deleteQueues(queueNames) {
186
+ const result = {};
187
+ for (const queueName of queueNames) {
188
+ result[queueName] = await this.deleteQueue(queueName);
189
+ }
190
+ return result;
191
+ }
192
+ async deleteQueue(queueName) {
193
+ try {
194
+ const result = await this.channel?.deleteQueue(queueName);
195
+ this.logger.info(`Queue ${queueName} has been deleted`, { queueName, result });
196
+ return result;
197
+ }
198
+ catch (err) {
199
+ this.logger.error(`Error while deleting a queue`, { queueName, err });
200
+ throw err;
201
+ }
202
+ }
203
+ async assertQueues(queueOptions) {
204
+ const result = {};
205
+ for await (const queueOption of queueOptions) {
206
+ result[queueOption.name] = await this.assertQueue(queueOption);
207
+ }
208
+ return result;
209
+ }
210
+ async assertQueue(queueOptions) {
211
+ const { bindTo, declare, name: queueName, unbindFrom = [], type = messageBrokerServiceConfig_1.QueueTypes.Quorum, options = this.defaultQueueOptions, } = queueOptions;
212
+ const shouldDeclare = declare ?? this.declareOptions.assertQueues;
213
+ options.arguments = {
214
+ ...options.arguments,
215
+ ...(type === messageBrokerServiceConfig_1.QueueTypes.Quorum
216
+ ? {
217
+ [interfaces_1.Arguments.queueType]: type,
218
+ }
219
+ : {}),
220
+ };
221
+ try {
222
+ if (shouldDeclare) {
223
+ const result = await this.channel?.assertQueue(queueName, options);
224
+ this.logger.info(`Queue ${queueName} has been declared`, { queueOptions, result });
225
+ for await (const bindOptions of bindTo) {
226
+ await this.bindQueueToExchange(queueName, bindOptions);
227
+ }
228
+ for await (const unbindOption of unbindFrom) {
229
+ await this.unbindQueueFromExchange(queueName, unbindOption);
230
+ }
231
+ return result;
232
+ }
233
+ }
234
+ catch (err) {
235
+ this.logger.error(`Error while assert queue`, { queueName, err });
236
+ throw err;
237
+ }
238
+ }
239
+ async assertExchanges(exchangeOptions) {
240
+ const result = {};
241
+ for await (const exchangeOption of exchangeOptions) {
242
+ result[exchangeOption.name] = await this.assertExchange(exchangeOption);
243
+ }
244
+ return result;
245
+ }
246
+ async assertExchange(exchangeOptions) {
247
+ const { name, delayed, declare, bindTo = [], type = this.defaultExchangeType, options = this.defaultExchangeOptions, } = exchangeOptions;
248
+ options.arguments = {
249
+ ...options.arguments,
250
+ ...(delayed ? { [interfaces_1.Arguments.delayedType]: messageBrokerServiceConfig_1.ExchangeType.Topic } : {}),
251
+ };
252
+ const exchangeType = delayed ? messageBrokerServiceConfig_1.ExchangeType.XDelayedMessage : type;
253
+ const shouldDeclare = declare ?? this.declareOptions.assertExchanges;
254
+ try {
255
+ if (shouldDeclare) {
256
+ const result = await this.channel?.assertExchange(name, exchangeType, options);
257
+ this.logger.info(`Exchange ${name} has been declared`, { exchangeOptions, result });
258
+ await this.bindExchangeToExchanges(name, bindTo);
259
+ return result;
260
+ }
261
+ }
262
+ catch (err) {
263
+ this.logger.error(`Error while assert exchange`, { name, err });
264
+ throw err;
265
+ }
266
+ }
267
+ async unbindQueueFromExchanges(queueOptions) {
268
+ const { name: queueName, unbindFrom = [] } = queueOptions;
269
+ for await (const unbindOption of unbindFrom) {
270
+ await this.unbindQueueFromExchange(queueName, unbindOption);
271
+ }
272
+ }
273
+ async bindQueueToExchange(queueName, bindOptions) {
274
+ const { bind, exchangeName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY } = bindOptions;
275
+ const shouldBind = bind ?? this.declareOptions.assertQueues;
276
+ try {
277
+ if (shouldBind) {
278
+ const result = await this.channel?.bindQueue(queueName, exchangeName, routingKey);
279
+ this.logger.info(`Queue [${queueName}] has been bound with exchange [${exchangeName}] by routing key [${routingKey}]`);
280
+ return result;
281
+ }
282
+ }
283
+ catch (err) {
284
+ this.logger.error(`Error while binding queue [${queueName}] to exchange [${exchangeName}] by routing key [${routingKey}]`, {
285
+ err,
286
+ });
287
+ throw err;
288
+ }
289
+ }
290
+ async bindExchangeToExchanges(exchangeName, bindTo) {
291
+ for await (const bindOption of bindTo) {
292
+ await this.bindExchangeToExchange(exchangeName, bindOption);
293
+ }
294
+ }
295
+ async bindExchangeToExchange(exchangeName, bindOptions) {
296
+ const { bind, exchangeName: relatedExchangeName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY } = bindOptions;
297
+ const shouldBind = bind ?? this.declareOptions.assertExchanges;
298
+ try {
299
+ if (shouldBind) {
300
+ const result = await this.channel?.bindExchange(exchangeName, relatedExchangeName, routingKey);
301
+ this.logger.info(`Exchange [${exchangeName}] has been bound with exchange [${relatedExchangeName}] by routing key [${routingKey}]`);
302
+ return result;
303
+ }
304
+ }
305
+ catch (err) {
306
+ this.logger.error(`Error while binding exchange [${exchangeName}] to exchange [${relatedExchangeName}] by routing key [${routingKey}]`, {
307
+ err,
308
+ });
309
+ throw err;
310
+ }
311
+ }
312
+ async unbindQueueFromExchange(queueName, unbindOptions) {
313
+ const { unbind, exchangeName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY } = unbindOptions;
314
+ try {
315
+ if (unbind) {
316
+ const result = await this.channel?.unbindQueue(queueName, exchangeName, routingKey);
317
+ this.logger.info(`Queue [${queueName}] has been unbound from exchange [${exchangeName}] by routing key [${routingKey}]`);
318
+ return result;
319
+ }
320
+ }
321
+ catch (err) {
322
+ this.logger.error(`Error while unbinding queue [${queueName}] from exchange [${exchangeName}] by routing key [${routingKey}]`, {
323
+ err,
324
+ });
325
+ throw err;
326
+ }
327
+ }
328
+ async disconnect() {
329
+ await this.channel?.close();
330
+ this.connection.removeAllListeners(interfaces_1.AmqpConnectionEventNames.Ready);
331
+ await this.connection.closeConnection();
332
+ }
333
+ async initChannel() {
334
+ this.channel = await this.connection.createChannel(this.channelName);
335
+ }
336
+ async readConfig(declarationConfigPath) {
337
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
338
+ const data = await (0, promises_1.readFile)(declarationConfigPath, { encoding: 'utf8' }); // nosemgrep: eslint.detect-non-literal-fs-filename
339
+ return JSON.parse(data);
340
+ }
341
+ async assertTemporaryQueue(queueOptions) {
342
+ const tempQueueOptions = this.prepareTemporaryQueueOptions(queueOptions);
343
+ await this.assertQueue(tempQueueOptions);
344
+ return tempQueueOptions;
345
+ }
346
+ async assertAlternateExchanges(queueOptions, exchangesOptions) {
347
+ const alternateExchangesOptions = this.prepareAlternateExchangesOptions(queueOptions, exchangesOptions);
348
+ await this.assertExchanges(Object.values(alternateExchangesOptions));
349
+ return alternateExchangesOptions;
350
+ }
351
+ async assertAlternateQueue(queueOptions, alternateExchangesOptions) {
352
+ const alternateQueueOptions = this.prepareAlternateQueueOptions(queueOptions, alternateExchangesOptions);
353
+ await this.assertQueue(alternateQueueOptions);
354
+ return alternateQueueOptions;
355
+ }
356
+ prepareRedeclareQueueOptions(queueOptions, redeclareQueueOptions) {
357
+ return {
358
+ ...queueOptions,
359
+ ...redeclareQueueOptions,
360
+ };
361
+ }
362
+ prepareTemporaryQueueOptions(queueOptions) {
363
+ return {
364
+ ...queueOptions,
365
+ name: `${queueOptions.name}Temporary`,
366
+ };
367
+ }
368
+ prepareAlternateExchangesOptions(queueOptions, exchangesOptions) {
369
+ const result = {};
370
+ if (exchangesOptions.length === 0) {
371
+ return result;
372
+ }
373
+ const exchangesOptionsMap = new Map(exchangesOptions.map((exchangeOptions) => [exchangeOptions.name, exchangeOptions]));
374
+ for (const bindOptions of queueOptions.bindTo) {
375
+ const { exchangeName, bind } = bindOptions;
376
+ if (!bind) {
377
+ continue;
378
+ }
379
+ const exchangeOptions = exchangesOptionsMap.get(exchangeName);
380
+ if (!exchangeOptions) {
381
+ throw new Error(`Alternate exchange options could not be defined for unknown exchange [${exchangeName}]`);
382
+ }
383
+ result[exchangeName] = this.prepareAlternateExchangeOptions(exchangeOptions);
384
+ }
385
+ return result;
386
+ }
387
+ prepareAlternateExchangeOptions(exchangeOptions) {
388
+ const { name: exchangeName } = exchangeOptions;
389
+ return {
390
+ ...exchangeOptions,
391
+ declare: true,
392
+ name: `${exchangeName}${AmqpAsserter.PrefixAlternate}`,
393
+ };
394
+ }
395
+ prepareAlternateQueueOptions(queueOptions, alternateExchangesOptions) {
396
+ const { name: queueName, bindTo = [] } = queueOptions;
397
+ return {
398
+ ...queueOptions,
399
+ name: `${queueName}${AmqpAsserter.PrefixAlternate}`,
400
+ bindTo: this.prepareAlternateBindToQueueOption(bindTo, alternateExchangesOptions),
401
+ };
402
+ }
403
+ prepareAlternateBindToQueueOption(bindTo, alternateExchangesOptions) {
404
+ return bindTo
405
+ .filter(({ exchangeName }) => exchangeName in alternateExchangesOptions)
406
+ .map(({ exchangeName, routingKey }) => {
407
+ const { name: alternateExchangeName } = alternateExchangesOptions[exchangeName];
408
+ return {
409
+ bind: true,
410
+ routingKey,
411
+ exchangeName: alternateExchangeName,
412
+ };
413
+ });
414
+ }
415
+ }
416
+ exports.AmqpAsserter = AmqpAsserter;
417
+ //# sourceMappingURL=amqpAsserter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amqpAsserter.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/amqpAsserter.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
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
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.AmqpConnection = void 0;
27
37
  const node_events_1 = require("node:events");
@@ -42,7 +52,7 @@ class AmqpConnection extends node_events_1.EventEmitter {
42
52
  socketOptions;
43
53
  reconnectEnabled = false;
44
54
  reconnectTimeout = defaultReconnectTimeoutMs;
45
- connection = null;
55
+ connection;
46
56
  connectionStatus = amqpConnection_1.ConnectionStatus.Init;
47
57
  constructor(connectOptions, logger, reconnectOptions, socketOptions = defaultSocketOptions) {
48
58
  super();
@@ -64,7 +74,7 @@ class AmqpConnection extends node_events_1.EventEmitter {
64
74
  this.logger.info('Connection to RabbitMQ is created');
65
75
  this.logger.info('Connection is ready');
66
76
  this.emit('ready');
67
- this.connection.on('close', async () => {
77
+ this.connection?.on('close', async () => {
68
78
  this.connectionStatus = amqpConnection_1.ConnectionStatus.Closed;
69
79
  if (this.reconnectEnabled) {
70
80
  await this.reconnect();
@@ -74,8 +84,8 @@ class AmqpConnection extends node_events_1.EventEmitter {
74
84
  this.logger.warn('Reconnect is disabled in config');
75
85
  }
76
86
  });
77
- this.connection.on('error', async (err) => {
78
- this.logger.error('Connection error', err);
87
+ this.connection?.on('error', async (err) => {
88
+ this.logger.error('Connection error', { err });
79
89
  });
80
90
  }
81
91
  catch (err) {
@@ -89,26 +99,38 @@ class AmqpConnection extends node_events_1.EventEmitter {
89
99
  }
90
100
  }
91
101
  }
92
- /**
93
- * Create new channel
94
- */
95
102
  async createChannel(queueName) {
96
103
  this.logger.info('Creating channel to RabbitMQ...', { queueName });
97
- const channel = await this.connection.createChannel();
98
- channel.on('close', async () => {
99
- this.logger.info('Channel was closed.');
100
- });
101
- channel.on('error', (err) => {
102
- this.logger.error('Channel on error', { err });
103
- });
104
- this.logger.info('Channel to RabbitMQ is created', { queueName });
105
- return channel;
104
+ if (!this.connection) {
105
+ throw new Error('RabbitMQ connection is not initialized');
106
+ }
107
+ try {
108
+ const channel = await this.connection.createChannel();
109
+ channel.on('cancel', (consumerTag) => {
110
+ this.logger.info(`Consumer with tag ${consumerTag} was cancelled.`);
111
+ });
112
+ channel.on('close', async () => {
113
+ this.logger.info('Channel was closed.');
114
+ });
115
+ channel.on('error', (err) => {
116
+ this.logger.error('Channel on error', { err });
117
+ });
118
+ this.logger.info('Channel to RabbitMQ is created', { queueName });
119
+ return channel;
120
+ }
121
+ catch (err) {
122
+ this.logger.error('Creating channel to Rabbit MQ error', { err });
123
+ if (this.reconnectEnabled) {
124
+ await this.reconnect();
125
+ return await this.createChannel(queueName);
126
+ }
127
+ throw err;
128
+ }
106
129
  }
107
130
  async reconnect() {
108
131
  this.connectionStatus = amqpConnection_1.ConnectionStatus.Reconnecting;
109
132
  this.logger.info(`Try to reconnect to Rabbit MQ in ${this.reconnectTimeout} ms`);
110
133
  await new Promise((resolve) => {
111
- // eslint-disable-next-line @typescript-eslint/no-implied-eval
112
134
  setTimeout(resolve, this.reconnectTimeout);
113
135
  });
114
136
  await this.connect();
@@ -118,7 +140,7 @@ class AmqpConnection extends node_events_1.EventEmitter {
118
140
  return;
119
141
  }
120
142
  this.connectionStatus = amqpConnection_1.ConnectionStatus.Closing;
121
- await this.connection.close();
143
+ await this.connection?.close();
122
144
  this.logger.info('Connection was closed');
123
145
  }
124
146
  getStatus() {
@@ -1 +1 @@
1
- {"version":3,"file":"amqpConnection.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/amqpConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"amqpConnection.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/amqpConnection.ts"],"names":[],"mappings":"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"}