@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.
package/dist/src/config/index.js
CHANGED
|
@@ -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.
|
|
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();
|
|
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(
|
|
513
|
+
const sent = this.channel.sendToQueue(retryQueueName, messageBuffer, {
|
|
514
514
|
headers: {
|
|
515
515
|
'x-retry-count': attempt,
|
|
516
|
-
|
|
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
package/rabbitMQConfig.json
CHANGED
|
@@ -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": "
|
|
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": "
|
|
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
|
}
|