@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
@@ -6,136 +6,185 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AmqpPublisher = void 0;
7
7
  const node_crypto_1 = require("node:crypto");
8
8
  const node_events_1 = require("node:events");
9
+ const errors_1 = require("@diia-inhouse/errors");
10
+ const types_1 = require("@diia-inhouse/types");
9
11
  const constants_1 = __importDefault(require("../../constants"));
10
- const amqpPublisher_1 = require("../../interfaces/providers/rabbitmq/amqpPublisher");
11
- const { APP_ID, DEFAULT_ROUTING_KEY } = constants_1.default;
12
+ const metrics_1 = require("../../interfaces/metrics");
13
+ const rabbitmq_1 = require("../../interfaces/providers/rabbitmq");
14
+ const { APP_ID, DEFAULT_ROUTING_KEY, REPLY_TO_QUEUE_NAME } = constants_1.default;
12
15
  class AmqpPublisher {
13
16
  connection;
14
17
  logger;
15
- timeout;
16
- defaultExchangeType = amqpPublisher_1.ExchangeType.Topic;
17
- channel;
18
- eventEmitter;
19
- defaultExchangeOptions = {
20
- durable: true,
21
- autoDelete: false,
18
+ rabbitMQMetrics;
19
+ systemServiceName;
20
+ defaultPublishOptions = {
21
+ // eslint-disable-next-line unicorn/text-encoding-identifier-case
22
+ contentEncoding: 'utf-8',
23
+ contentType: 'application/json',
24
+ // if true, the message will be returned if it is not routed to a queue
25
+ // i.e., if there are no bindings that match its routing key
26
+ // meaning persistent
27
+ deliveryMode: 2,
28
+ // an arbitrary identifier for the originating application
29
+ appId: APP_ID,
30
+ // if true, the message will be returned if it is not routed to a queue
31
+ // (i.e., if there are no bindings that match its routing key).
32
+ mandatory: true,
22
33
  };
23
- constructor(connection, logger, timeout = 10000) {
34
+ rpcChannel;
35
+ regularChannel;
36
+ replyToQueueName = REPLY_TO_QUEUE_NAME;
37
+ eventEmitter;
38
+ directResponseTimeout = 10000;
39
+ constructor(connection, logger, rabbitMQMetrics, systemServiceName, options = {}) {
24
40
  this.connection = connection;
25
41
  this.logger = logger;
26
- this.timeout = timeout;
42
+ this.rabbitMQMetrics = rabbitMQMetrics;
43
+ this.systemServiceName = systemServiceName;
44
+ this.directResponseTimeout = options.timeout || this.directResponseTimeout;
45
+ this.replyToQueueName = options.replyToQueueName || REPLY_TO_QUEUE_NAME;
27
46
  }
28
47
  async init() {
29
- await this.createChannel();
48
+ await this.createRpcChannel();
49
+ await this.createRegularChannel();
30
50
  this.connection.on('ready', async () => {
31
51
  // in case if reconnect happened
32
- await this.createChannel();
52
+ await this.createRpcChannel();
53
+ await this.createRegularChannel();
33
54
  });
34
55
  }
35
- async createChannel() {
36
- const queueName = 'amq.rabbitmq.reply-to';
37
- this.channel = await this.connection.createChannel(queueName);
56
+ async publishToExchange(exchangeName, message, headers, routingKey = DEFAULT_ROUTING_KEY) {
57
+ const { event, payload } = message;
58
+ const startTime = process.hrtime.bigint();
59
+ const route = event;
60
+ const source = this.systemServiceName;
61
+ const destination = metrics_1.LabelUnknown;
62
+ try {
63
+ if (!event || !exchangeName || !payload) {
64
+ const message = `Invalid event name [${event}] or exchange name [${exchangeName}] or payload [${JSON.stringify(payload)}]`;
65
+ this.logger.error(message);
66
+ throw new errors_1.InternalServerError(message);
67
+ }
68
+ const publishOptions = this.getPublishOptions(headers);
69
+ this.logger.info(`Publish event: ${event}`, { routingKey, delay: headers['x-delay'] });
70
+ this.logger.io('Event message', message);
71
+ this.publishMessage(message, exchangeName, routingKey, publishOptions);
72
+ this.collectMetrics(startTime, route, source, destination);
73
+ }
74
+ catch (err) {
75
+ this.logger.error('Error while publishing event', { err, exchangeName, routingKey });
76
+ this.collectMetrics(startTime, route, source, destination, errors_1.ErrorType.Unoperated);
77
+ throw err;
78
+ }
79
+ }
80
+ async publishToExchangeDirect(exchangeName, message, headers, routingKey = DEFAULT_ROUTING_KEY, responseTimeoutMs = this.directResponseTimeout) {
81
+ const startTime = process.hrtime.bigint();
82
+ const route = message.event;
83
+ const source = this.systemServiceName;
84
+ let errorType = undefined;
85
+ let destination = metrics_1.LabelUnknown;
86
+ try {
87
+ const { body, headers: { [rabbitmq_1.Headers.handledBy]: handledBy }, } = await this.receiveDirectResponse(exchangeName, message, headers, routingKey, responseTimeoutMs);
88
+ destination = handledBy || destination;
89
+ return body;
90
+ }
91
+ catch (err) {
92
+ this.logger.error('Failed to receive a direct response', { err, exchangeName, routingKey });
93
+ errorType = errors_1.ErrorType.Unoperated;
94
+ throw err;
95
+ }
96
+ finally {
97
+ this.collectMetrics(startTime, route, source, destination, errorType);
98
+ }
99
+ }
100
+ getStatus() {
101
+ return this.connection.getStatus();
102
+ }
103
+ async createRegularChannel() {
104
+ this.regularChannel = await this.connection.createChannel();
105
+ }
106
+ async createRpcChannel() {
107
+ this.rpcChannel = await this.connection.createChannel(this.replyToQueueName);
108
+ this.rpcChannel?.on('error', async () => await this.createRpcChannel());
38
109
  // eslint-disable-next-line unicorn/prefer-event-target
39
110
  this.eventEmitter = new node_events_1.EventEmitter();
40
- this.eventEmitter.setMaxListeners(0);
41
- await this.channel.consume(queueName, (msg) => {
42
- this.eventEmitter.emit(msg.properties.correlationId, JSON.parse(msg.content.toString('utf8')));
43
- }, { noAck: true });
111
+ this.eventEmitter?.setMaxListeners(0);
112
+ const consumeOptions = { noAck: true };
113
+ await this.rpcChannel?.consume(this.replyToQueueName, this.listenReplyToQueue.bind(this), consumeOptions);
44
114
  }
45
- async publishToExchange(params) {
46
- const { eventName, message, exchangeName, routingKey = DEFAULT_ROUTING_KEY, responseRoutingKey, headers, options } = params;
47
- if (!eventName || !exchangeName || !message) {
48
- this.logger.error(`Invalid event name [${eventName}] or exchange name [${exchangeName}] or message [${JSON.stringify(message)}]`);
49
- return false;
115
+ listenReplyToQueue(msg) {
116
+ if (!msg) {
117
+ this.logger.error('Consumed direct message is null');
118
+ return;
50
119
  }
51
- const eventMessage = AmqpPublisher.prepareQueueMessageData(eventName, responseRoutingKey, message, options);
52
- return await this.publish(eventMessage, exchangeName, routingKey, headers);
120
+ const body = JSON.parse(msg.content.toString('utf8'));
121
+ const headers = msg.properties.headers || {};
122
+ this.eventEmitter?.emit(msg.properties.correlationId, { body, headers });
53
123
  }
54
- async publishToExchangeDirect(params) {
55
- const { eventName, message, exchangeName, routingKey = DEFAULT_ROUTING_KEY, responseRoutingKey, headers, options } = params;
56
- const timeout = options?.timeout || this.timeout;
57
- if (!eventName || !exchangeName || !message) {
58
- throw new Error(`Invalid event name [${eventName}] or exchange name [${exchangeName}] or message [${JSON.stringify(message)}]`);
124
+ publishMessage(eventMessage, exchangeName, routingKey, publishOptions) {
125
+ if (!this.regularChannel) {
126
+ throw new Error('Publishing message is denied, channel is not initialized');
59
127
  }
60
- const eventMessage = AmqpPublisher.prepareQueueMessageData(eventName, responseRoutingKey, message, options);
61
- return await this.publishDirect(eventMessage, exchangeName, routingKey, timeout, headers);
128
+ return this.publish(eventMessage, exchangeName, routingKey, publishOptions, this.regularChannel);
62
129
  }
63
- static prepareQueueMessageData(eventName, responseRoutingKey, message, options) {
64
- const eventMessage = {
65
- event: eventName,
66
- payload: message,
67
- meta: {
68
- date: new Date(),
69
- },
70
- };
71
- if (responseRoutingKey) {
72
- eventMessage.meta.responseRoutingKey = responseRoutingKey;
130
+ publishRequest(eventMessage, exchangeName, routingKey, publishOptions) {
131
+ if (!this.rpcChannel) {
132
+ throw new Error('Publishing RPC request is denied, channel is not initialized');
73
133
  }
74
- if (options?.ignoreCache) {
75
- eventMessage.meta.ignoreCache = options.ignoreCache;
134
+ return this.publish(eventMessage, exchangeName, routingKey, publishOptions, this.rpcChannel);
135
+ }
136
+ publish(eventMessage, exchangeName, routingKey, publishOptions, channel) {
137
+ const data = JSON.stringify(eventMessage);
138
+ const content = Buffer.from(data);
139
+ const isPublishingSuccessful = channel.publish(exchangeName, routingKey, content, publishOptions);
140
+ if (!isPublishingSuccessful) {
141
+ throw new errors_1.InternalServerError('Message has not been published');
76
142
  }
77
- return eventMessage;
78
143
  }
79
- publishDirect(eventMessage, exchangeName, routingKey, timeoutMs, headers) {
144
+ getPublishOptions(headers, extraOpts = {}) {
145
+ return {
146
+ ...this.defaultPublishOptions,
147
+ timestamp: Date.now(), // a timestamp for the message
148
+ ...extraOpts,
149
+ headers: {
150
+ ...headers,
151
+ [rabbitmq_1.Headers.sentFrom]: this.systemServiceName,
152
+ },
153
+ };
154
+ }
155
+ async receiveDirectResponse(exchangeName, message, headers, routingKey = DEFAULT_ROUTING_KEY, responseTimeoutMs = this.directResponseTimeout) {
156
+ const { event, payload } = message;
157
+ if (!event || !exchangeName || !payload) {
158
+ throw new Error(`Invalid event name [${event}] or exchange name [${exchangeName}] or payload [${JSON.stringify(payload)}]`);
159
+ }
80
160
  const correlationId = (0, node_crypto_1.randomUUID)();
81
- this.logger.info(`Publish direct event: ${eventMessage.event}`, { routingKey, correlationId });
82
- this.logger.io('Direct event message', eventMessage);
83
- const publishOptions = AmqpPublisher.defaultPublishOptions(headers);
84
- publishOptions.replyTo = 'amq.rabbitmq.reply-to';
85
- publishOptions.correlationId = correlationId;
86
- return new Promise((resolve, reject) => {
161
+ const publishOptions = this.getPublishOptions(headers, {
162
+ correlationId,
163
+ replyTo: this.replyToQueueName,
164
+ });
165
+ this.logger.info(`Publish direct event: ${event}`, { routingKey, correlationId, eventUuid: payload.uuid });
166
+ this.logger.io('Direct event message', message);
167
+ return await new Promise((resolve, reject) => {
87
168
  const timeout = setTimeout(() => {
88
- this.eventEmitter.removeAllListeners(correlationId);
89
- reject(new Error('Time out for external event: ' + eventMessage.event));
90
- }, timeoutMs);
91
- this.eventEmitter.once(correlationId, (args) => {
169
+ this.eventEmitter?.removeAllListeners(correlationId);
170
+ reject(new errors_1.ExternalCommunicatorError(`Time out for external event: ${event}`, types_1.HttpStatusCode.GATEWAY_TIMEOUT));
171
+ }, responseTimeoutMs);
172
+ this.eventEmitter?.once(correlationId, (args) => {
92
173
  clearTimeout(timeout);
93
- resolve(args);
174
+ this.logger.io('Direct event response message', args.body);
175
+ return resolve(args);
94
176
  });
95
177
  try {
96
- this.channel.publish(exchangeName, routingKey, Buffer.from(JSON.stringify(eventMessage)), publishOptions);
178
+ this.publishRequest(message, exchangeName, routingKey, publishOptions);
97
179
  }
98
180
  catch (err) {
99
181
  reject(err);
100
182
  }
101
183
  });
102
184
  }
103
- async publish(eventMessage, exchangeName, routingKey, headers) {
104
- const delay = headers?.['x-delay'];
105
- this.logger.info(`Publish event: ${eventMessage.event}`, { routingKey, delay });
106
- this.logger.io('Event message', eventMessage);
107
- const publishOptions = AmqpPublisher.defaultPublishOptions(headers);
108
- return this.channel.publish(exchangeName, routingKey, Buffer.from(JSON.stringify(eventMessage)), publishOptions);
109
- }
110
- static defaultPublishOptions(headers) {
111
- return {
112
- // eslint-disable-next-line unicorn/text-encoding-identifier-case
113
- contentEncoding: 'utf-8',
114
- contentType: 'application/json',
115
- // if true, the message will be returned if it is not routed to a queue
116
- // i.e., if there are no bindings that match its routing key
117
- // meaning persistent
118
- deliveryMode: 2,
119
- // an arbitrary identifier for the originating application
120
- appId: APP_ID,
121
- // if true, the message will be returned if it is not routed to a queue
122
- // (i.e., if there are no bindings that match its routing key).
123
- mandatory: true,
124
- timestamp: Date.now(), // a timestamp for the message
125
- headers,
126
- };
127
- }
128
- async checkExchange(exchangeName, exchangeType = this.defaultExchangeType, options = {}) {
129
- try {
130
- return await this.channel.assertExchange(exchangeName, exchangeType, { ...this.defaultExchangeOptions, ...options });
131
- }
132
- catch (err) {
133
- this.logger.error(`Error while assert exchange [${exchangeName}]`);
134
- throw err;
135
- }
136
- }
137
- getStatus() {
138
- return this.connection.getStatus();
185
+ collectMetrics(startTime, route, source, destination, errorType) {
186
+ this.rabbitMQMetrics.collectCommunicationsTotalMetric(route, source, destination, 'outbound');
187
+ this.rabbitMQMetrics.collectRequestTotalMetric(startTime, route, source, destination, errorType);
139
188
  }
140
189
  }
141
190
  exports.AmqpPublisher = AmqpPublisher;
@@ -1 +1 @@
1
- {"version":3,"file":"amqpPublisher.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/amqpPublisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"amqpPublisher.js","sourceRoot":"","sources":["../../../src/providers/rabbitmq/amqpPublisher.ts"],"names":[],"mappings":"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"}