@platform-x/hep-message-broker-client 1.1.6 → 1.1.9

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.
@@ -19,6 +19,8 @@ exports.default = {
19
19
  MAIN_QUEUE: 'main_queue',
20
20
  MAIN_EXCHANGE: 'assets_metadata_generate_exchange',
21
21
  DLX_QUEUE: 'dead_letter_queue',
22
+ DLX_QUEUE_ETG: 'etg_dead_letter_queue',
23
+ DLX_QUEUE_ETG_RETRY: 'etg_retry_queue',
22
24
  DLX_EXCHANGE: 'assets_dlx_exchange',
23
25
  RETRY_QUEUE: 'retry_queue',
24
26
  RETRY_EXCHANGE: 'assets_metadata_generate_retry_exchange',
@@ -154,8 +154,9 @@ class MessageBroker {
154
154
  configManager.loadConfig(RABBITMQ === null || RABBITMQ === void 0 ? void 0 : RABBITMQ.CONFIG_PATH);
155
155
  const secret = yield (0, __1.getIAMSecrets)();
156
156
  let url = `amqp://${secret === null || secret === void 0 ? void 0 : secret[constants_1.SECRET_KEYS.RABBITMQ_USER]}:${secret === null || secret === void 0 ? void 0 : secret[constants_1.SECRET_KEYS.RABBITMQ_PASS]}@${RABBITMQ === null || RABBITMQ === void 0 ? void 0 : RABBITMQ.HOST}`;
157
- //console.log(SECRET_KEYS.RABBITMQ_USER, SECRET_KEYS.RABBITMQ_PASS);
158
- //const url = `amqp://${RABBITMQ.USER}:${RABBITMQ.PASS}@${RABBITMQ.HOST}:${RABBITMQ.PORT}`;
157
+ logger_1.Logger.info(`${constants_1.SECRET_KEYS.RABBITMQ_USER}, ${constants_1.SECRET_KEYS.RABBITMQ_PASS}, ${RABBITMQ === null || RABBITMQ === void 0 ? void 0 : RABBITMQ.HOST}, ${url}`, 'createConnection');
158
+ logger_1.Logger.info(secret, 'createConnection');
159
+ // const url = `amqp://${RABBITMQ.USER}:${RABBITMQ.PASS}@${RABBITMQ.HOST}:${RABBITMQ.PORT}`;
159
160
  this.connection = yield amqp.connect(url, { heartbeat: RABBITMQ.HEARTBEAT });
160
161
  this.channel = yield this.connection.createConfirmChannel();
161
162
  this.connectionEventHandler(); // Event handlers for connection 'error' and 'close'
@@ -242,7 +243,7 @@ class MessageBroker {
242
243
  // Bind all queues to exchanges with routing keys
243
244
  for (const exchangeName in bindings) {
244
245
  for (const binding of bindings[exchangeName]) {
245
- yield this.bindQueueAndExchanges(exchangeName, binding.queue, binding.routingKey);
246
+ yield this.bindQueueAndExchanges(exchangeName, binding.queue, binding.routingKey, binding.options);
246
247
  logger_1.Logger.info(`${binding.queue} bound to exchange ${exchangeName} with routing key ${binding.routingKey}`, 'registerQueueAndExchange');
247
248
  }
248
249
  }
@@ -259,10 +260,15 @@ class MessageBroker {
259
260
  * @param queueName
260
261
  * @param routingKey
261
262
  */
262
- bindQueueAndExchanges(exchangeName, queueName, routingKey) {
263
+ bindQueueAndExchanges(exchangeName, queueName, routingKey, options) {
263
264
  return __awaiter(this, void 0, void 0, function* () {
264
265
  logger_1.Logger.info('Reached to bindQueueAndExchanges', 'bindQueueAndExchanges');
265
266
  try {
267
+ if (options) {
268
+ yield this.channel.bindQueue(queueName, exchangeName, routingKey, options);
269
+ logger_1.Logger.info(`Queue ${queueName} bound to exchange ${exchangeName} with routing key ${routingKey} and options ${JSON.stringify(options)}`, 'bindQueueAndExchanges');
270
+ return;
271
+ }
266
272
  yield this.channel.bindQueue(queueName, exchangeName, routingKey);
267
273
  logger_1.Logger.info(`Queue ${queueName} bound to exchange ${exchangeName} with routing key ${routingKey}`, 'bindQueueAndExchanges');
268
274
  }
@@ -364,7 +370,7 @@ class MessageBroker {
364
370
  const { message, attempt } = request;
365
371
  try {
366
372
  yield this.checkConnectionAndChannel(); // Ensure connection and channel are alive before sending to DLQ
367
- const dlqQueue = RABBITMQ.DLX_QUEUE;
373
+ const dlqQueue = RABBITMQ.DLX_QUEUE_ETG;
368
374
  const messageBuffer = Buffer.from(JSON.stringify(message));
369
375
  const sent = this.channel.sendToQueue(dlqQueue, messageBuffer, {
370
376
  persistent: true,
@@ -427,15 +433,9 @@ class MessageBroker {
427
433
  const msgData = JSON.parse(message.content.toString());
428
434
  const headers = message.properties.headers || {};
429
435
  const retryCount = headers['x-retry-count'] || 0;
430
- const retryMessageTTL = headers['x-message-ttl'] || 0;
431
436
  const feedType = (_b = (_a = msgData === null || msgData === void 0 ? void 0 : msgData.message) === null || _a === void 0 ? void 0 : _a.feed_type) !== null && _b !== void 0 ? _b : msgData === null || msgData === void 0 ? void 0 : msgData.feed_type;
432
437
  const retryDelayTTL = feedType === constants_1.RABBITMQ_FEED_TYPE.OVR ? RABBITMQ.OVR_TTL : RABBITMQ.ETX_TTL;
433
438
  const retryDelay = retryDelayTTL.split('|').map(Number);
434
- // Consuming delay for retry messages based on x-message-ttl header.
435
- if (retryMessageTTL) {
436
- logger_1.Logger.info(`Delaying message processing by ${retryMessageTTL / 1000} seconds... for queue ${queueName}`, 'consumeMessage');
437
- yield new Promise((resolve) => setTimeout(resolve, retryMessageTTL));
438
- }
439
439
  const data = {
440
440
  queue_name: queueName,
441
441
  body: (_d = (_c = msgData === null || msgData === void 0 ? void 0 : msgData.message) === null || _c === void 0 ? void 0 : _c.body) !== null && _d !== void 0 ? _d : msgData === null || msgData === void 0 ? void 0 : msgData.body,
@@ -508,13 +508,17 @@ class MessageBroker {
508
508
  const { attempt, data, retryDelayMs, queueName } = request;
509
509
  logger_1.Logger.info(`Sending message to retry queue: ${queueName} (attempt: ${attempt}, delay: ${retryDelayMs}ms)`, 'sendMessageToRetryQueue');
510
510
  try {
511
- yield this.checkConnectionAndChannel(); // connection check before sending to retry queue
511
+ yield this.checkConnectionAndChannel();
512
+ const retryQueueName = RABBITMQ.DLX_QUEUE_ETG_RETRY;
512
513
  const messageBuffer = Buffer.from(JSON.stringify(data));
513
- const sent = this.channel.sendToQueue(queueName, messageBuffer, {
514
+ const sent = this.channel.sendToQueue(retryQueueName, messageBuffer, {
514
515
  headers: {
515
516
  'x-retry-count': attempt,
516
- 'x-message-ttl': retryDelayMs
517
+ toQueue: queueName,
517
518
  },
519
+ expiration: retryDelayMs.toString(),
520
+ persistent: true,
521
+ mandatory: true
518
522
  });
519
523
  if (sent) {
520
524
  logger_1.Logger.info(`Message sent to retry queue: ${queueName} (attempt: ${attempt})`, 'sendMessageToRetryQueue');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-x/hep-message-broker-client",
3
- "version": "1.1.6",
3
+ "version": "1.1.9",
4
4
  "description": "platform-x hep-message-broker service",
5
5
  "main": "./dist/src/index.js",
6
6
  "scripts": {
@@ -22,10 +22,76 @@
22
22
  "type": "direct",
23
23
  "durable": true,
24
24
  "autoDelete": false
25
+ },
26
+ {
27
+ "name": "etg_exchange",
28
+ "type": "headers",
29
+ "durable": true,
30
+ "autoDelete": false
25
31
  }
26
32
  ],
27
33
  "bindings": {
28
34
  "main_exchange": [
35
+ {
36
+ "queue": "file_metadata_request_queue",
37
+ "routingKey": "file_metadata_request_queue"
38
+ },
39
+ {
40
+ "queue": "image_thumbnail_request_queue",
41
+ "routingKey": "image_thumbnail_request_queue"
42
+ },
43
+ {
44
+ "queue": "image_thumbnail_response_queue",
45
+ "routingKey": "image_thumbnail_response_queue"
46
+ },
47
+ {
48
+ "queue": "video_thumbnail_request_queue",
49
+ "routingKey": "video_thumbnail_request_queue"
50
+ },
51
+ {
52
+ "queue": "video_thumbnail_response_queue",
53
+ "routingKey": "video_thumbnail_response_queue"
54
+ },
55
+ {
56
+ "queue": "translation_request_queue",
57
+ "routingKey": "translation_request_queue"
58
+ },
59
+ {
60
+ "queue": "translation_response_queue",
61
+ "routingKey": "translation_response_queue"
62
+ },
63
+ {
64
+ "queue": "label_request_queue",
65
+ "routingKey": "label_request_queue"
66
+ },
67
+ {
68
+ "queue": "label_response_queue",
69
+ "routingKey": "label_response_queue"
70
+ },
71
+ {
72
+ "queue": "summary_request_queue",
73
+ "routingKey": "summary_request_queue"
74
+ },
75
+ {
76
+ "queue": "summary_response_queue",
77
+ "routingKey": "summary_response_queue"
78
+ },
79
+ {
80
+ "queue": "transcript_response_queue",
81
+ "routingKey": "transcript_response_queue"
82
+ },
83
+ {
84
+ "queue": "transcript_request_queue",
85
+ "routingKey": "transcript_request_queue"
86
+ },
87
+ {
88
+ "queue": "seo_request_queue",
89
+ "routingKey": "seo_request_queue"
90
+ },
91
+ {
92
+ "queue": "seo_response_queue",
93
+ "routingKey": "seo_response_queue"
94
+ },
29
95
  {
30
96
  "queue": "golf_feed_data_tournament_upsert_queue",
31
97
  "routingKey": "golf_feed_data_tournament_upsert_queue"
@@ -40,6 +106,32 @@
40
106
  ],
41
107
  "retry_exchange": [
42
108
  { "queue": "retry_queue", "routingKey": "retry_queue" }
109
+ ],
110
+ "etg_exchange": [
111
+ {
112
+ "queue": "golf_feed_data_tournament_upsert_queue",
113
+ "routingKey": "golf_feed_data_tournament_upsert_queue",
114
+ "options": {
115
+ "toQueue": "golf_feed_data_tournament_upsert_queue",
116
+ "x-match": "any"
117
+ }
118
+ },
119
+ {
120
+ "queue": "golf_feed_data_leaderboard_upsert_queue",
121
+ "routingKey": "golf_feed_data_leaderboard_upsert_queue",
122
+ "options": {
123
+ "toQueue": "golf_feed_data_leaderboard_upsert_queue",
124
+ "x-match": "any"
125
+ }
126
+ },
127
+ {
128
+ "queue": "etg_dead_letter_queue",
129
+ "routingKey": "etg_dead_letter_queue",
130
+ "options": {
131
+ "toQueue": "etg_dead_letter_queue",
132
+ "x-match": "any"
133
+ }
134
+ }
43
135
  ]
44
136
  },
45
137
  "queues": [
@@ -58,8 +150,8 @@
58
150
  "x-dead-letter-exchange": "main_exchange"
59
151
  }
60
152
  },
61
- {
62
- "name": "golf_feed_data_tournament_upsert_queue",
153
+ {
154
+ "name": "seo_request_queue",
63
155
  "durable": true,
64
156
  "exclusive": false,
65
157
  "autoDelete": false,
@@ -69,7 +161,97 @@
69
161
  }
70
162
  },
71
163
  {
72
- "name": "golf_feed_data_leaderboard_upsert_queue",
164
+ "name": "seo_response_queue",
165
+ "durable": true,
166
+ "exclusive": false,
167
+ "autoDelete": false,
168
+ "arguments": {
169
+ "x-dead-letter-exchange": "retry_exchange",
170
+ "x-dead-letter-routing-key": "retry_queue"
171
+ }
172
+ },
173
+ {
174
+ "name": "image_thumbnail_request_queue",
175
+ "durable": true,
176
+ "exclusive": false,
177
+ "autoDelete": false,
178
+ "arguments": {
179
+ "x-dead-letter-exchange": "retry_exchange",
180
+ "x-dead-letter-routing-key": "retry_queue"
181
+ }
182
+ },
183
+ {
184
+ "name": "image_thumbnail_response_queue",
185
+ "durable": true,
186
+ "exclusive": false,
187
+ "autoDelete": false,
188
+ "arguments": {
189
+ "x-dead-letter-exchange": "retry_exchange",
190
+ "x-dead-letter-routing-key": "retry_queue"
191
+ }
192
+ },
193
+ {
194
+ "name": "video_thumbnail_request_queue",
195
+ "durable": true,
196
+ "exclusive": false,
197
+ "autoDelete": false,
198
+ "arguments": {
199
+ "x-dead-letter-exchange": "retry_exchange",
200
+ "x-dead-letter-routing-key": "retry_queue"
201
+ }
202
+ },
203
+ {
204
+ "name": "video_thumbnail_response_queue",
205
+ "durable": true,
206
+ "exclusive": false,
207
+ "autoDelete": false,
208
+ "arguments": {
209
+ "x-dead-letter-exchange": "retry_exchange",
210
+ "x-dead-letter-routing-key": "retry_queue"
211
+ }
212
+ },
213
+ {
214
+ "name": "label_request_queue",
215
+ "durable": true,
216
+ "exclusive": false,
217
+ "autoDelete": false,
218
+ "arguments": {
219
+ "x-dead-letter-exchange": "retry_exchange",
220
+ "x-dead-letter-routing-key": "retry_queue"
221
+ }
222
+ },
223
+ {
224
+ "name": "label_response_queue",
225
+ "durable": true,
226
+ "exclusive": false,
227
+ "autoDelete": false,
228
+ "arguments": {
229
+ "x-dead-letter-exchange": "retry_exchange",
230
+ "x-dead-letter-routing-key": "retry_queue"
231
+ }
232
+ },
233
+ {
234
+ "name": "transcript_request_queue",
235
+ "durable": true,
236
+ "exclusive": false,
237
+ "autoDelete": false,
238
+ "arguments": {
239
+ "x-dead-letter-exchange": "retry_exchange",
240
+ "x-dead-letter-routing-key": "retry_queue"
241
+ }
242
+ },
243
+ {
244
+ "name": "transcript_response_queue",
245
+ "durable": true,
246
+ "exclusive": false,
247
+ "autoDelete": false,
248
+ "arguments": {
249
+ "x-dead-letter-exchange": "retry_exchange",
250
+ "x-dead-letter-routing-key": "retry_queue"
251
+ }
252
+ },
253
+ {
254
+ "name": "translation_request_queue",
73
255
  "durable": true,
74
256
  "exclusive": false,
75
257
  "autoDelete": false,
@@ -77,9 +259,84 @@
77
259
  "x-dead-letter-exchange": "retry_exchange",
78
260
  "x-dead-letter-routing-key": "retry_queue"
79
261
  }
262
+ },
263
+ {
264
+ "name": "translation_response_queue",
265
+ "durable": true,
266
+ "exclusive": false,
267
+ "autoDelete": false,
268
+ "arguments": {
269
+ "x-dead-letter-exchange": "retry_exchange",
270
+ "x-dead-letter-routing-key": "retry_queue"
271
+ }
272
+ },
273
+ {
274
+ "name": "summary_request_queue",
275
+ "durable": true,
276
+ "exclusive": false,
277
+ "autoDelete": false,
278
+ "arguments": {
279
+ "x-dead-letter-exchange": "retry_exchange",
280
+ "x-dead-letter-routing-key": "retry_queue"
281
+ }
282
+ },
283
+ {
284
+ "name": "summary_response_queue",
285
+ "durable": true,
286
+ "exclusive": false,
287
+ "autoDelete": false,
288
+ "arguments": {
289
+ "x-dead-letter-exchange": "retry_exchange",
290
+ "x-dead-letter-routing-key": "retry_queue"
291
+ }
292
+ },
293
+ {
294
+ "name": "file_metadata_request_queue",
295
+ "durable": true,
296
+ "exclusive": false,
297
+ "autoDelete": false,
298
+ "arguments": {
299
+ "x-dead-letter-exchange": "retry_exchange",
300
+ "x-dead-letter-routing-key": "retry_queue"
301
+ }
302
+ },
303
+ {
304
+ "name": "etg_retry_queue",
305
+ "durable": true,
306
+ "exclusive": false,
307
+ "autoDelete": false,
308
+ "arguments": {
309
+ "x-dead-letter-exchange": "etg_exchange"
310
+ }
311
+ },
312
+ {
313
+ "name": "etg_dead_letter_queue",
314
+ "durable": true,
315
+ "exclusive": false,
316
+ "autoDelete": false
317
+ },
318
+ {
319
+ "name": "golf_feed_data_tournament_upsert_queue",
320
+ "durable": true,
321
+ "exclusive": false,
322
+ "autoDelete": false
323
+ },
324
+ {
325
+ "name": "golf_feed_data_leaderboard_upsert_queue",
326
+ "durable": true,
327
+ "exclusive": false,
328
+ "autoDelete": false
80
329
  }
81
330
  ],
82
331
  "consume_queues": {
332
+ "image_thumbnail_response_queue": "image_thumbnail_response_queue",
333
+ "video_thumbnail_response_queue": "video_thumbnail_response_queue",
334
+ "label_response_queue": "label_response_queue",
335
+ "transcript_response_queue": "transcript_response_queue",
336
+ "translation_response_queue": "translation_response_queue",
337
+ "summary_response_queue": "summary_response_queue",
338
+ "seo_response_queue" : "seo_response_queue",
339
+ "file_metadata_request_queue" : "file_metadata_request_queue",
83
340
  "golf_feed_data_tournament_upsert_queue" : "golf_feed_data_tournament_upsert_queue",
84
341
  "golf_feed_data_leaderboard_upsert_queue" : "golf_feed_data_leaderboard_upsert_queue"
85
342
  }