@platform-x/hep-message-broker-client 1.1.26 → 1.1.28

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.
@@ -71,6 +71,10 @@ let dlx_queue = RABBITMQ.DLX_QUEUE;
71
71
  // let retry_queue:string = RABBITMQ.RETRY_QUEUE;
72
72
  let connectionRetry = 1;
73
73
  let retryCountHeader = 'x-retry-count';
74
+ let registeredConsumers = new Map();
75
+ // Guards handleReconnect() so overlapping close/error events don't spawn
76
+ // multiple concurrent reconnect loops.
77
+ let isReconnecting = false;
74
78
  class MessageBrokerClient {
75
79
  // private readonly correlationId: string;
76
80
  // constructor() {
@@ -332,9 +336,35 @@ class MessageBrokerClient {
332
336
  consumeMessage(queueName, classInstance, consumerHandler, consumerErrorHandler) {
333
337
  return __awaiter(this, void 0, void 0, function* () {
334
338
  logger_1.Logger.info("Reached: Consuming messages from the queue", 'consumeMessage');
339
+ // Remember this consumer so it can be re-attached after any reconnect or
340
+ // channel recreation. Keyed by queueName so repeated calls don't stack.
341
+ registeredConsumers.set(queueName, { queueName, classInstance, consumerHandler, consumerErrorHandler });
342
+ return yield this.subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler);
343
+ });
344
+ }
345
+ ;
346
+ /**
347
+ * Function to attach a single consumer to a queue. Performs the actual
348
+ * channel.consume() and owns the ack/retry/DLQ logic. Kept separate from
349
+ * consumeMessage() so re-subscription (on reconnect) does not re-register
350
+ * the consumer in the registry, which would grow it unboundedly.
351
+ * @param queueName
352
+ * @param classInstance
353
+ * @param consumerHandler
354
+ * @param consumerErrorHandler
355
+ */
356
+ subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler) {
357
+ return __awaiter(this, void 0, void 0, function* () {
335
358
  let attempt = 0;
336
359
  if (isConnectionOpen) {
337
- return yield channel.consume(queueName, (message) => __awaiter(this, void 0, void 0, function* () {
360
+ // Capture the channel this consumer is registered on. acks/nacks for
361
+ // messages delivered here MUST go back to this same channel object —
362
+ // if the module-level `channel` is later reassigned (recreateChannel /
363
+ // createConnection), acking against the new channel raises
364
+ // PRECONDITION_FAILED ("unknown delivery tag") and closes it, taking
365
+ // every consumer down with it.
366
+ const ch = channel;
367
+ return yield ch.consume(queueName, (message) => __awaiter(this, void 0, void 0, function* () {
338
368
  var _a;
339
369
  if (message) {
340
370
  logger_1.Logger.info(`Message received from queue ${queueName}: ${JSON.stringify(message)}`, 'consumeMessage');
@@ -371,7 +401,7 @@ class MessageBrokerClient {
371
401
  else {
372
402
  logger_1.Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
373
403
  }
374
- channel.nack(message, false, false); // Move message to DLQ after failure
404
+ this.safeNack(ch, message); // Move message to DLQ after failure
375
405
  return false;
376
406
  }
377
407
  attempt++;
@@ -384,13 +414,19 @@ class MessageBrokerClient {
384
414
  retryDelay = Number(count);
385
415
  yield this.sendMessageToRetryQueue(attempt, data, retryDelay, queueName);
386
416
  logger_1.Logger.info(`Retrying in ${retryDelay / 1000} seconds...`, 'consumeMessage');
387
- yield new Promise((resolve) => setTimeout(resolve, retryDelay));
417
+ // Ack immediately once the message is safely on the retry
418
+ // queue. Do NOT block the delivery for the full TTL — the
419
+ // delay is enforced by the retry queue's own expiration.
420
+ // Holding it here risks breaching RabbitMQ's
421
+ // consumer_timeout and getting the channel cancelled.
422
+ this.safeAck(ch, message);
423
+ return;
388
424
  }
389
425
  else {
390
426
  logger_1.Logger.info(`Acknowledge the successful processing`, 'consumeMessage');
391
427
  }
392
428
  // Acknowledge the successful processing
393
- channel.ack(message);
429
+ this.safeAck(ch, message);
394
430
  }
395
431
  }
396
432
  catch (error) {
@@ -404,7 +440,7 @@ class MessageBrokerClient {
404
440
  else {
405
441
  logger_1.Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
406
442
  }
407
- channel.nack(message, false, false); // Move message to DLQ after failure
443
+ this.safeNack(ch, message); // Move message to DLQ after failure
408
444
  }
409
445
  }
410
446
  }));
@@ -412,6 +448,57 @@ class MessageBrokerClient {
412
448
  });
413
449
  }
414
450
  ;
451
+ /**
452
+ * Function to re-attach every registered consumer. Called after each
453
+ * successful (re)connect and after a channel is recreated, so queues never
454
+ * end up with the connection alive but no consumer attached.
455
+ */
456
+ reregisterConsumers() {
457
+ return __awaiter(this, void 0, void 0, function* () {
458
+ if (registeredConsumers.size === 0) {
459
+ return;
460
+ }
461
+ logger_1.Logger.info(`Re-subscribing ${registeredConsumers.size} consumer(s) after (re)connect`, 'reregisterConsumers');
462
+ for (const c of registeredConsumers.values()) {
463
+ try {
464
+ yield this.subscribeConsumer(c.queueName, c.classInstance, c.consumerHandler, c.consumerErrorHandler);
465
+ logger_1.Logger.info(`Consumer re-subscribed on queue ${c.queueName}`, 'reregisterConsumers');
466
+ }
467
+ catch (error) {
468
+ logger_1.Logger.error(`Failed to re-subscribe consumer on queue ${c.queueName}`, 'reregisterConsumers', error.message);
469
+ }
470
+ }
471
+ });
472
+ }
473
+ /**
474
+ * Function to ack a message against the channel it was delivered on, guarded
475
+ * so a stale delivery tag (channel already replaced) cannot throw and take
476
+ * down the current channel.
477
+ * @param ch the channel the message was consumed on
478
+ * @param message
479
+ */
480
+ safeAck(ch, message) {
481
+ try {
482
+ ch.ack(message);
483
+ }
484
+ catch (error) {
485
+ logger_1.Logger.error('Failed to ack message (stale channel?)', 'safeAck', error.message);
486
+ }
487
+ }
488
+ /**
489
+ * Function to nack a message against the channel it was delivered on, guarded
490
+ * against stale delivery tags. Never requeues (routes to DLQ).
491
+ * @param ch the channel the message was consumed on
492
+ * @param message
493
+ */
494
+ safeNack(ch, message) {
495
+ try {
496
+ ch.nack(message, false, false);
497
+ }
498
+ catch (error) {
499
+ logger_1.Logger.error('Failed to nack message (stale channel?)', 'safeNack', error.message);
500
+ }
501
+ }
415
502
  // /**
416
503
  // * Function for consumer massage handler
417
504
  // * @param request
@@ -705,9 +792,17 @@ class MessageBrokerClient {
705
792
  // create channel
706
793
  channel = yield connection.createConfirmChannel();
707
794
  channel.prefetch(RABBITMQ === null || RABBITMQ === void 0 ? void 0 : RABBITMQ.PREFETCH_COUNT);
795
+ // Watch the channel itself: a channel-level fault (e.g. PRECONDITION_FAILED
796
+ // from a stale ack) closes the channel and cancels its consumers without
797
+ // closing the connection, so the connection 'close' path never fires.
798
+ this.bindChannelEventHandler();
708
799
  logger_1.Logger.info('RabbitMQ connected successfully! ', 'createConnection');
709
800
  // create exchange and queue and bind with exchange
710
801
  yield this.setupQueuesAndExchanges();
802
+ // Re-attach any consumers registered before this (re)connect. Without
803
+ // this, after a reconnect the connection is healthy but no consumer is
804
+ // bound to the queues — the root cause of consumers "disappearing".
805
+ yield this.reregisterConsumers();
711
806
  const connectionWrapper = { connection, channel };
712
807
  return connectionWrapper;
713
808
  }
@@ -724,21 +819,17 @@ class MessageBrokerClient {
724
819
  */
725
820
  bindConnectionEventHandler() {
726
821
  try {
822
+ // 'error' always precedes 'close' from amqplib, so only 'close' drives the
823
+ // reconnect to avoid triggering it twice.
824
+ connection.on('error', (err) => {
825
+ var _a;
826
+ logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
827
+ });
727
828
  connection.on('close', (err) => __awaiter(this, void 0, void 0, function* () {
728
- logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, err);
829
+ var _a;
830
+ logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
729
831
  isConnectionOpen = false;
730
- if (connectionRetry <= maxRetries) {
731
- yield this.createConnection();
732
- connectionRetry++;
733
- }
734
- }));
735
- connection.on('error', (err) => __awaiter(this, void 0, void 0, function* () {
736
- logger_1.Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, err);
737
- isConnectionOpen = false;
738
- if (connectionRetry <= maxRetries) {
739
- yield this.createConnection();
740
- connectionRetry++;
741
- }
832
+ yield this.handleReconnect();
742
833
  }));
743
834
  return isConnectionOpen;
744
835
  }
@@ -747,6 +838,84 @@ class MessageBrokerClient {
747
838
  return isConnectionOpen;
748
839
  }
749
840
  }
841
+ /**
842
+ * Function to bind channel-level event handlers. A channel can be cancelled
843
+ * (e.g. PRECONDITION_FAILED, consumer_timeout) while the connection stays up;
844
+ * in that case the connection 'close' handler never fires, so the channel is
845
+ * recreated and consumers re-attached here.
846
+ */
847
+ bindChannelEventHandler() {
848
+ try {
849
+ channel.on('error', (err) => {
850
+ var _a;
851
+ logger_1.Logger.error(`RabbitMQ: bindChannelEventHandler:error`, `Channel error`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
852
+ });
853
+ channel.on('close', () => __awaiter(this, void 0, void 0, function* () {
854
+ logger_1.Logger.error(`RabbitMQ: bindChannelEventHandler:close`, `Channel closed`);
855
+ // Only self-heal the channel while the connection is still open. If the
856
+ // connection is down, handleReconnect() owns recovery (and will recreate
857
+ // the channel + consumers), so doing it here too would double-subscribe.
858
+ if (isConnectionOpen && !isReconnecting) {
859
+ try {
860
+ yield this.recreateChannel();
861
+ this.bindChannelEventHandler();
862
+ yield this.reregisterConsumers();
863
+ logger_1.Logger.info('Channel and consumers recovered after channel close', 'bindChannelEventHandler');
864
+ }
865
+ catch (error) {
866
+ logger_1.Logger.error('Failed to recover channel after close', 'bindChannelEventHandler', error.message);
867
+ }
868
+ }
869
+ }));
870
+ }
871
+ catch (error) {
872
+ logger_1.Logger.error('Error in bindChannelEventHandler', 'bindChannelEventHandler', error.message);
873
+ }
874
+ }
875
+ /**
876
+ * Function to reconnect to RabbitMQ with capped exponential backoff. Unlike
877
+ * the old logic — which capped total lifetime reconnects at MAX_RETRIES and
878
+ * never reset the counter — this retries indefinitely and resets on success,
879
+ * so the service self-heals from every disconnect. createConnection()
880
+ * re-attaches all registered consumers on success.
881
+ */
882
+ handleReconnect() {
883
+ return __awaiter(this, void 0, void 0, function* () {
884
+ var _a;
885
+ if (isReconnecting) {
886
+ logger_1.Logger.info('Reconnect already in progress, skipping duplicate trigger', 'handleReconnect');
887
+ return;
888
+ }
889
+ isReconnecting = true;
890
+ connectionRetry = 1;
891
+ // Backoff schedule derived from the TTL config, capped at its last value.
892
+ const backoffs = (retry_delay !== null && retry_delay !== void 0 ? retry_delay : []).map(Number).filter((n) => !Number.isNaN(n) && n > 0);
893
+ const maxBackoff = backoffs.length ? backoffs[backoffs.length - 1] : 30000;
894
+ try {
895
+ while (!isConnectionOpen) {
896
+ const delay = (_a = backoffs[connectionRetry - 1]) !== null && _a !== void 0 ? _a : maxBackoff;
897
+ logger_1.Logger.info(`Reconnect attempt ${connectionRetry} in ${delay / 1000}s...`, 'handleReconnect');
898
+ yield new Promise(resolve => setTimeout(resolve, delay));
899
+ try {
900
+ yield this.createConnection();
901
+ if (isConnectionOpen) {
902
+ connectionRetry = 1;
903
+ logger_1.Logger.info('Reconnected to RabbitMQ successfully', 'handleReconnect');
904
+ return;
905
+ }
906
+ throw new Error('createConnection did not establish an open connection');
907
+ }
908
+ catch (error) {
909
+ logger_1.Logger.error(`Reconnect attempt ${connectionRetry} failed`, 'handleReconnect', error.message);
910
+ connectionRetry++;
911
+ }
912
+ }
913
+ }
914
+ finally {
915
+ isReconnecting = false;
916
+ }
917
+ });
918
+ }
750
919
  }
751
920
  exports.MessageBrokerClient = MessageBrokerClient;
752
921
  //# sourceMappingURL=MessageBrokerClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBrokerClient.js","sourceRoot":"","sources":["../../../../src/messageBroker/rabbitmq/MessageBrokerClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageBrokerClient.js","sourceRoot":"","sources":["../../../../src/messageBroker/rabbitmq/MessageBrokerClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-x/hep-message-broker-client",
3
- "version": "1.1.26",
3
+ "version": "1.1.28",
4
4
  "description": "platform-x hep-message-broker service",
5
5
  "main": "./dist/src/index.js",
6
6
  "scripts": {
@@ -27,6 +27,23 @@ let dlx_queue:string = RABBITMQ.DLX_QUEUE;
27
27
  // let retry_queue:string = RABBITMQ.RETRY_QUEUE;
28
28
  let connectionRetry:number = 1;
29
29
  let retryCountHeader = 'x-retry-count';
30
+
31
+ // Registry of active consumers so they can be re-subscribed after any
32
+ // (re)connect. Without this, a connection blip brings the socket back up but
33
+ // leaves every queue with no consumer attached (the primary "consumer
34
+ // frequently detaches" bug). Keyed by queueName to avoid duplicate
35
+ // subscriptions on the same queue.
36
+ interface RegisteredConsumer {
37
+ queueName: string;
38
+ classInstance: any;
39
+ consumerHandler: string;
40
+ consumerErrorHandler: string;
41
+ }
42
+ let registeredConsumers: Map<string, RegisteredConsumer> = new Map();
43
+ // Guards handleReconnect() so overlapping close/error events don't spawn
44
+ // multiple concurrent reconnect loops.
45
+ let isReconnecting = false;
46
+
30
47
  export class MessageBrokerClient {
31
48
 
32
49
  // private readonly correlationId: string;
@@ -278,9 +295,33 @@ export class MessageBrokerClient {
278
295
  */
279
296
  public async consumeMessage(queueName: string, classInstance: any, consumerHandler: string , consumerErrorHandler:string) {
280
297
  Logger.info("Reached: Consuming messages from the queue", 'consumeMessage')
298
+ // Remember this consumer so it can be re-attached after any reconnect or
299
+ // channel recreation. Keyed by queueName so repeated calls don't stack.
300
+ registeredConsumers.set(queueName, { queueName, classInstance, consumerHandler, consumerErrorHandler });
301
+ return await this.subscribeConsumer(queueName, classInstance, consumerHandler, consumerErrorHandler);
302
+ };
303
+
304
+ /**
305
+ * Function to attach a single consumer to a queue. Performs the actual
306
+ * channel.consume() and owns the ack/retry/DLQ logic. Kept separate from
307
+ * consumeMessage() so re-subscription (on reconnect) does not re-register
308
+ * the consumer in the registry, which would grow it unboundedly.
309
+ * @param queueName
310
+ * @param classInstance
311
+ * @param consumerHandler
312
+ * @param consumerErrorHandler
313
+ */
314
+ private async subscribeConsumer(queueName: string, classInstance: any, consumerHandler: string, consumerErrorHandler: string) {
281
315
  let attempt:number = 0;
282
316
  if(isConnectionOpen){
283
- return await channel.consume(queueName, async (message: any) => {
317
+ // Capture the channel this consumer is registered on. acks/nacks for
318
+ // messages delivered here MUST go back to this same channel object —
319
+ // if the module-level `channel` is later reassigned (recreateChannel /
320
+ // createConnection), acking against the new channel raises
321
+ // PRECONDITION_FAILED ("unknown delivery tag") and closes it, taking
322
+ // every consumer down with it.
323
+ const ch: amqp.Channel = channel;
324
+ return await ch.consume(queueName, async (message: any) => {
284
325
  if(message){
285
326
  Logger.info(`Message received from queue ${queueName}: ${JSON.stringify(message)}`, 'consumeMessage');
286
327
  let msgData: any = JSON.parse(message.content.toString());
@@ -314,7 +355,7 @@ export class MessageBrokerClient {
314
355
  } else {
315
356
  Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
316
357
  }
317
- channel.nack(message, false, false); // Move message to DLQ after failure
358
+ this.safeNack(ch, message); // Move message to DLQ after failure
318
359
  return false;
319
360
  }
320
361
  attempt++;
@@ -327,12 +368,18 @@ export class MessageBrokerClient {
327
368
  retryDelay = Number(count);
328
369
  await this.sendMessageToRetryQueue(attempt, data, retryDelay, queueName);
329
370
  Logger.info(`Retrying in ${retryDelay / 1000} seconds...`, 'consumeMessage');
330
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
371
+ // Ack immediately once the message is safely on the retry
372
+ // queue. Do NOT block the delivery for the full TTL — the
373
+ // delay is enforced by the retry queue's own expiration.
374
+ // Holding it here risks breaching RabbitMQ's
375
+ // consumer_timeout and getting the channel cancelled.
376
+ this.safeAck(ch, message);
377
+ return;
331
378
  } else {
332
379
  Logger.info(`Acknowledge the successful processing`, 'consumeMessage');
333
380
  }
334
381
  // Acknowledge the successful processing
335
- channel.ack(message);
382
+ this.safeAck(ch, message);
336
383
  }
337
384
  } catch (error) {
338
385
  let errorMessage:string = (error as Error).message;
@@ -344,13 +391,62 @@ export class MessageBrokerClient {
344
391
  } else {
345
392
  Logger.info(`Method ${consumerErrorHandler} not found in classInstance.`, 'consumerMessage');
346
393
  }
347
- channel.nack(message, false, false); // Move message to DLQ after failure
394
+ this.safeNack(ch, message); // Move message to DLQ after failure
348
395
  }
349
396
  }
350
397
  });
351
398
  }
352
399
  };
353
400
 
401
+ /**
402
+ * Function to re-attach every registered consumer. Called after each
403
+ * successful (re)connect and after a channel is recreated, so queues never
404
+ * end up with the connection alive but no consumer attached.
405
+ */
406
+ private async reregisterConsumers(): Promise<void> {
407
+ if (registeredConsumers.size === 0) {
408
+ return;
409
+ }
410
+ Logger.info(`Re-subscribing ${registeredConsumers.size} consumer(s) after (re)connect`, 'reregisterConsumers');
411
+ for (const c of registeredConsumers.values()) {
412
+ try {
413
+ await this.subscribeConsumer(c.queueName, c.classInstance, c.consumerHandler, c.consumerErrorHandler);
414
+ Logger.info(`Consumer re-subscribed on queue ${c.queueName}`, 'reregisterConsumers');
415
+ } catch (error) {
416
+ Logger.error(`Failed to re-subscribe consumer on queue ${c.queueName}`, 'reregisterConsumers', (error as Error).message);
417
+ }
418
+ }
419
+ }
420
+
421
+ /**
422
+ * Function to ack a message against the channel it was delivered on, guarded
423
+ * so a stale delivery tag (channel already replaced) cannot throw and take
424
+ * down the current channel.
425
+ * @param ch the channel the message was consumed on
426
+ * @param message
427
+ */
428
+ private safeAck(ch: amqp.Channel, message: amqp.Message): void {
429
+ try {
430
+ ch.ack(message);
431
+ } catch (error) {
432
+ Logger.error('Failed to ack message (stale channel?)', 'safeAck', (error as Error).message);
433
+ }
434
+ }
435
+
436
+ /**
437
+ * Function to nack a message against the channel it was delivered on, guarded
438
+ * against stale delivery tags. Never requeues (routes to DLQ).
439
+ * @param ch the channel the message was consumed on
440
+ * @param message
441
+ */
442
+ private safeNack(ch: amqp.Channel, message: amqp.Message): void {
443
+ try {
444
+ ch.nack(message, false, false);
445
+ } catch (error) {
446
+ Logger.error('Failed to nack message (stale channel?)', 'safeNack', (error as Error).message);
447
+ }
448
+ }
449
+
354
450
  // /**
355
451
  // * Function for consumer massage handler
356
452
  // * @param request
@@ -639,9 +735,17 @@ export class MessageBrokerClient {
639
735
  // create channel
640
736
  channel = await connection.createConfirmChannel();
641
737
  channel.prefetch(RABBITMQ?.PREFETCH_COUNT);
738
+ // Watch the channel itself: a channel-level fault (e.g. PRECONDITION_FAILED
739
+ // from a stale ack) closes the channel and cancels its consumers without
740
+ // closing the connection, so the connection 'close' path never fires.
741
+ this.bindChannelEventHandler();
642
742
  Logger.info('RabbitMQ connected successfully! ', 'createConnection');
643
743
  // create exchange and queue and bind with exchange
644
744
  await this.setupQueuesAndExchanges();
745
+ // Re-attach any consumers registered before this (re)connect. Without
746
+ // this, after a reconnect the connection is healthy but no consumer is
747
+ // bound to the queues — the root cause of consumers "disappearing".
748
+ await this.reregisterConsumers();
645
749
  const connectionWrapper: ConnectionWrapper = { connection, channel }
646
750
  return connectionWrapper;
647
751
  } catch (error) {
@@ -657,21 +761,15 @@ export class MessageBrokerClient {
657
761
  */
658
762
  private bindConnectionEventHandler(): boolean {
659
763
  try {
660
- connection.on('close', async(err: any) => {
661
- Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, err);
662
- isConnectionOpen = false;
663
- if(connectionRetry<= maxRetries){
664
- await this.createConnection();
665
- connectionRetry++;
666
- }
764
+ // 'error' always precedes 'close' from amqplib, so only 'close' drives the
765
+ // reconnect to avoid triggering it twice.
766
+ connection.on('error', (err: any) => {
767
+ Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, err?.message ?? err);
667
768
  });
668
- connection.on('error', async(err: any) => {
669
- Logger.error(`RabbitMQ: bindConnectionEventHandler:error`, `Connection error`, err);
769
+ connection.on('close', async(err: any) => {
770
+ Logger.error(`RabbitMQ: bindConnectionEventHandler:close`, `Connection closed`, err?.message ?? err);
670
771
  isConnectionOpen = false;
671
- if(connectionRetry<= maxRetries){
672
- await this.createConnection();
673
- connectionRetry++;
674
- }
772
+ await this.handleReconnect();
675
773
  });
676
774
  return isConnectionOpen;
677
775
  } catch (error) {
@@ -681,5 +779,77 @@ export class MessageBrokerClient {
681
779
 
682
780
  }
683
781
 
782
+ /**
783
+ * Function to bind channel-level event handlers. A channel can be cancelled
784
+ * (e.g. PRECONDITION_FAILED, consumer_timeout) while the connection stays up;
785
+ * in that case the connection 'close' handler never fires, so the channel is
786
+ * recreated and consumers re-attached here.
787
+ */
788
+ private bindChannelEventHandler(): void {
789
+ try {
790
+ channel.on('error', (err: any) => {
791
+ Logger.error(`RabbitMQ: bindChannelEventHandler:error`, `Channel error`, err?.message ?? err);
792
+ });
793
+ channel.on('close', async () => {
794
+ Logger.error(`RabbitMQ: bindChannelEventHandler:close`, `Channel closed`);
795
+ // Only self-heal the channel while the connection is still open. If the
796
+ // connection is down, handleReconnect() owns recovery (and will recreate
797
+ // the channel + consumers), so doing it here too would double-subscribe.
798
+ if (isConnectionOpen && !isReconnecting) {
799
+ try {
800
+ await this.recreateChannel();
801
+ this.bindChannelEventHandler();
802
+ await this.reregisterConsumers();
803
+ Logger.info('Channel and consumers recovered after channel close', 'bindChannelEventHandler');
804
+ } catch (error) {
805
+ Logger.error('Failed to recover channel after close', 'bindChannelEventHandler', (error as Error).message);
806
+ }
807
+ }
808
+ });
809
+ } catch (error) {
810
+ Logger.error('Error in bindChannelEventHandler', 'bindChannelEventHandler', (error as Error).message);
811
+ }
812
+ }
813
+
814
+ /**
815
+ * Function to reconnect to RabbitMQ with capped exponential backoff. Unlike
816
+ * the old logic — which capped total lifetime reconnects at MAX_RETRIES and
817
+ * never reset the counter — this retries indefinitely and resets on success,
818
+ * so the service self-heals from every disconnect. createConnection()
819
+ * re-attaches all registered consumers on success.
820
+ */
821
+ private async handleReconnect(): Promise<void> {
822
+ if (isReconnecting) {
823
+ Logger.info('Reconnect already in progress, skipping duplicate trigger', 'handleReconnect');
824
+ return;
825
+ }
826
+ isReconnecting = true;
827
+ connectionRetry = 1;
828
+ // Backoff schedule derived from the TTL config, capped at its last value.
829
+ const backoffs: number[] = (retry_delay ?? []).map(Number).filter((n: number) => !Number.isNaN(n) && n > 0);
830
+ const maxBackoff = backoffs.length ? backoffs[backoffs.length - 1] : 30000;
831
+ try {
832
+ while (!isConnectionOpen) {
833
+ const delay = backoffs[connectionRetry - 1] ?? maxBackoff;
834
+ Logger.info(`Reconnect attempt ${connectionRetry} in ${delay / 1000}s...`, 'handleReconnect');
835
+ await new Promise(resolve => setTimeout(resolve, delay));
836
+ try {
837
+ await this.createConnection();
838
+ if (isConnectionOpen) {
839
+ connectionRetry = 1;
840
+ Logger.info('Reconnected to RabbitMQ successfully', 'handleReconnect');
841
+ return;
842
+ }
843
+ throw new Error('createConnection did not establish an open connection');
844
+ } catch (error) {
845
+ Logger.error(`Reconnect attempt ${connectionRetry} failed`, 'handleReconnect', (error as Error).message);
846
+ connectionRetry++;
847
+ }
848
+ }
849
+ } finally {
850
+ isReconnecting = false;
851
+ }
852
+ }
853
+
684
854
  }
685
855