@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.
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,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
|
-
|
|
158
|
-
|
|
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.
|
|
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();
|
|
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(
|
|
514
|
+
const sent = this.channel.sendToQueue(retryQueueName, messageBuffer, {
|
|
514
515
|
headers: {
|
|
515
516
|
'x-retry-count': attempt,
|
|
516
|
-
|
|
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
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
|
}
|