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

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,8 @@ 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
+ // console.log(SECRET_KEYS.RABBITMQ_USER, SECRET_KEYS.RABBITMQ_PASS);
158
+ // const url = `amqp://${RABBITMQ.USER}:${RABBITMQ.PASS}@${RABBITMQ.HOST}:${RABBITMQ.PORT}`;
159
159
  this.connection = yield amqp.connect(url, { heartbeat: RABBITMQ.HEARTBEAT });
160
160
  this.channel = yield this.connection.createConfirmChannel();
161
161
  this.connectionEventHandler(); // Event handlers for connection 'error' and 'close'
@@ -242,7 +242,7 @@ class MessageBroker {
242
242
  // Bind all queues to exchanges with routing keys
243
243
  for (const exchangeName in bindings) {
244
244
  for (const binding of bindings[exchangeName]) {
245
- yield this.bindQueueAndExchanges(exchangeName, binding.queue, binding.routingKey);
245
+ yield this.bindQueueAndExchanges(exchangeName, binding.queue, binding.routingKey, binding.options);
246
246
  logger_1.Logger.info(`${binding.queue} bound to exchange ${exchangeName} with routing key ${binding.routingKey}`, 'registerQueueAndExchange');
247
247
  }
248
248
  }
@@ -259,10 +259,15 @@ class MessageBroker {
259
259
  * @param queueName
260
260
  * @param routingKey
261
261
  */
262
- bindQueueAndExchanges(exchangeName, queueName, routingKey) {
262
+ bindQueueAndExchanges(exchangeName, queueName, routingKey, options) {
263
263
  return __awaiter(this, void 0, void 0, function* () {
264
264
  logger_1.Logger.info('Reached to bindQueueAndExchanges', 'bindQueueAndExchanges');
265
265
  try {
266
+ if (options) {
267
+ yield this.channel.bindQueue(queueName, exchangeName, routingKey, options);
268
+ logger_1.Logger.info(`Queue ${queueName} bound to exchange ${exchangeName} with routing key ${routingKey} and options ${JSON.stringify(options)}`, 'bindQueueAndExchanges');
269
+ return;
270
+ }
266
271
  yield this.channel.bindQueue(queueName, exchangeName, routingKey);
267
272
  logger_1.Logger.info(`Queue ${queueName} bound to exchange ${exchangeName} with routing key ${routingKey}`, 'bindQueueAndExchanges');
268
273
  }
@@ -364,7 +369,7 @@ class MessageBroker {
364
369
  const { message, attempt } = request;
365
370
  try {
366
371
  yield this.checkConnectionAndChannel(); // Ensure connection and channel are alive before sending to DLQ
367
- const dlqQueue = RABBITMQ.DLX_QUEUE;
372
+ const dlqQueue = RABBITMQ.DLX_QUEUE_ETG;
368
373
  const messageBuffer = Buffer.from(JSON.stringify(message));
369
374
  const sent = this.channel.sendToQueue(dlqQueue, messageBuffer, {
370
375
  persistent: true,
@@ -427,15 +432,9 @@ class MessageBroker {
427
432
  const msgData = JSON.parse(message.content.toString());
428
433
  const headers = message.properties.headers || {};
429
434
  const retryCount = headers['x-retry-count'] || 0;
430
- const retryMessageTTL = headers['x-message-ttl'] || 0;
431
435
  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
436
  const retryDelayTTL = feedType === constants_1.RABBITMQ_FEED_TYPE.OVR ? RABBITMQ.OVR_TTL : RABBITMQ.ETX_TTL;
433
437
  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
438
  const data = {
440
439
  queue_name: queueName,
441
440
  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 +507,17 @@ class MessageBroker {
508
507
  const { attempt, data, retryDelayMs, queueName } = request;
509
508
  logger_1.Logger.info(`Sending message to retry queue: ${queueName} (attempt: ${attempt}, delay: ${retryDelayMs}ms)`, 'sendMessageToRetryQueue');
510
509
  try {
511
- yield this.checkConnectionAndChannel(); // connection check before sending to retry queue
510
+ yield this.checkConnectionAndChannel();
511
+ const retryQueueName = RABBITMQ.DLX_QUEUE_ETG_RETRY;
512
512
  const messageBuffer = Buffer.from(JSON.stringify(data));
513
- const sent = this.channel.sendToQueue(queueName, messageBuffer, {
513
+ const sent = this.channel.sendToQueue(retryQueueName, messageBuffer, {
514
514
  headers: {
515
515
  'x-retry-count': attempt,
516
- 'x-message-ttl': retryDelayMs
516
+ toQueue: queueName,
517
517
  },
518
+ expiration: retryDelayMs.toString(),
519
+ persistent: true,
520
+ mandatory: true
518
521
  });
519
522
  if (sent) {
520
523
  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.8",
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
  }