@autofleet/rabbit 3.4.0-beta.1 → 3.4.0-beta.11

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.
Files changed (3) hide show
  1. package/dist/index.js +120 -47
  2. package/package.json +1 -1
  3. package/src/index.ts +119 -51
package/dist/index.js CHANGED
@@ -209,15 +209,15 @@ class RabbitMq {
209
209
  this.oldPublishConnection = {
210
210
  connection: null,
211
211
  creatingConnection: false,
212
- connectionCreatedEventName: 'publishConnectionCreated',
213
- connectionFailedEventName: 'publishConnectionFailed',
212
+ connectionCreatedEventName: 'oldPublishConnectionCreated',
213
+ connectionFailedEventName: 'oldPublishConnectionFailed',
214
214
  blockReconnect: false,
215
215
  };
216
216
  this.oldConsumeConnection = {
217
217
  connection: null,
218
218
  creatingConnection: false,
219
- connectionCreatedEventName: 'consumeConnectionCreated',
220
- connectionFailedEventName: 'consumeConnectionFailed',
219
+ connectionCreatedEventName: 'oldConsumeConnectionCreated',
220
+ connectionFailedEventName: 'oldConsumeConnectionFailed',
221
221
  blockReconnect: false,
222
222
  };
223
223
  this.oldCreatingConnection = false;
@@ -231,6 +231,12 @@ class RabbitMq {
231
231
  async getConnection(connection) {
232
232
  return new Promise(async (resolve, reject) => {
233
233
  const { connection: connectionLocal, creatingConnection, connectionCreatedEventName, connectionFailedEventName, blockReconnect, } = connection;
234
+ if (connection === this.publishConnection) {
235
+ debug('rabbit: getConnection publish', { connectionLocal, creatingConnection, blockReconnect });
236
+ }
237
+ else if (connection === this.consumeConnection) {
238
+ debug('rabbit: getConnection consume', { connectionLocal, creatingConnection, blockReconnect });
239
+ }
234
240
  if (blockReconnect) {
235
241
  debug('rabbit: block reconnect');
236
242
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -269,6 +275,12 @@ class RabbitMq {
269
275
  findServers,
270
276
  });
271
277
  connection.connection = newConnection;
278
+ if (connection === this.publishConnection) {
279
+ debug('rabbit: publishConnection set');
280
+ }
281
+ else if (connection === this.consumeConnection) {
282
+ debug('rabbit: consumeConnection set');
283
+ }
272
284
  newConnection.on('error', (err) => {
273
285
  logger_1.default.error('rabbit: connection error', { err });
274
286
  if (!isResolved) {
@@ -316,7 +328,13 @@ class RabbitMq {
316
328
  logger_1.default.error(`rabbit: error on get connection for new channel ${name} `, { e });
317
329
  throw e;
318
330
  }
319
- const channel = localConnection.createChannel({ ...options });
331
+ if (connection === this.publishConnection) {
332
+ debug('rabbit: getNewChannel publish', { localConnection });
333
+ }
334
+ else if (connection === this.consumeConnection) {
335
+ debug('rabbit: getNewChannel consume', { localConnection });
336
+ }
337
+ const channel = localConnection?.createChannel({ ...options });
320
338
  (0, events_1.once)(channel, 'close').then((args) => {
321
339
  logger_1.default.error(`rabbit: channel ${name} closed`);
322
340
  onClose?.(args);
@@ -468,10 +486,10 @@ class RabbitMq {
468
486
  // Used by the microservices to consume messages from the queue
469
487
  async consume(queue, callback, options) {
470
488
  // TODO: [QUORUM-PHASE-3] Use only the implementation of consumeNew and delete consumeNew and consumeOld
471
- if (options?.isQuorumQueue !== false) {
472
- await this.assertVHost();
473
- await this.consumeNew(queue, callback, options);
474
- }
489
+ // if (options?.isQuorumQueue !== false) {
490
+ // await this.assertVHost();
491
+ // await this.consumeNew(queue, callback, options);
492
+ // }
475
493
  await this.consumeOld(queue, callback, options);
476
494
  }
477
495
  // TODO: [QUORUM-PHASE-3] Delete consumeNew we do not use it anymore
@@ -611,22 +629,24 @@ class RabbitMq {
611
629
  ]);
612
630
  });
613
631
  }
614
- // TODO: [QUORUM-PHASE-3] Delete the old implementation
615
- await this.saveConsumerOld(queue, callback, options);
616
- const channelOld = await this.getNewChannelOld({
617
- name: `consume-exchange-${exchange}-queue-${queue}-old`,
618
- connection: this.oldConsumeConnection,
619
- });
620
- await channelOld.addSetup(async (c) => {
621
- const assertExchange = await (0, utils_1.assertExchangeFanout)(c, exchange);
622
- await c.assertQueue(queue);
623
- this.oldExchanges[exchange] = assertExchange;
624
- await c.prefetch(limit, false);
625
- return Promise.all([
626
- c.bindQueue(queue, exchange, ''),
627
- this.consumeOld(queue, callback, options),
628
- ]);
629
- });
632
+ else {
633
+ // TODO: [QUORUM-PHASE-3] Delete the old implementation
634
+ await this.saveConsumerOld(queue, callback, options);
635
+ const channelOld = await this.getNewChannelOld({
636
+ name: `consume-exchange-${exchange}-queue-${queue}-old`,
637
+ connection: this.oldConsumeConnection,
638
+ });
639
+ await channelOld.addSetup(async (c) => {
640
+ const assertExchange = await (0, utils_1.assertExchangeFanout)(c, exchange);
641
+ await c.assertQueue(queue);
642
+ this.oldExchanges[exchange] = assertExchange;
643
+ await c.prefetch(limit, false);
644
+ return Promise.all([
645
+ c.bindQueue(queue, exchange, ''),
646
+ this.consumeOld(queue, callback, options),
647
+ ]);
648
+ });
649
+ }
630
650
  }
631
651
  // Used by the microservices to publish messages to the exchange
632
652
  // TODO: [QUORUM-PHASE-2] Change the implementation to the new one
@@ -669,27 +689,47 @@ class RabbitMq {
669
689
  }
670
690
  // TODO: [QUORUM-PHASE-2] After changing the publish from old to new change from the old to the new implementation
671
691
  async isConnected() {
672
- debug('rabbit: start is connected');
673
- const consumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
674
- const publishConnection = await this.getConnectionOld(this.oldPublishConnection);
675
- const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
676
- if (!isConnected) {
677
- logger_1.default.error('rabbit: isConnected - false');
678
- return false;
679
- }
680
- const channel = await this.assertChannelOld({ connection: this.oldPublishConnection });
681
- try {
682
- await Promise.all([
683
- channel.waitForConnect(),
684
- ...this.oldConsumers.map((c) => channel.checkQueue(c.queue)),
685
- ]);
686
- }
687
- catch (e) {
688
- logger_1.default.error('rabbit: isConnected - false');
689
- return false;
690
- }
691
- logger_1.default.debug('rabbit: isConnected - true');
692
+ debug('rabbit: start old is connected', { connection: this.oldPublishConnection.connectionCreatedEventName });
692
693
  return true;
694
+ // debug('rabbit: start old is connected');
695
+ // const oldConsumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
696
+ // const oldPublishConnection = await this.getConnectionOld(this.oldPublishConnection);
697
+ // const oldIsConnected = oldConsumeConnection.isConnected() && oldPublishConnection.isConnected();
698
+ // if (!oldIsConnected) {
699
+ // logger.error('rabbit: isConnected - false');
700
+ // return false;
701
+ // }
702
+ // const oldChannel: any = await this.assertChannelOld({ connection: this.oldPublishConnection });
703
+ // try {
704
+ // await Promise.all([
705
+ // oldChannel.waitForConnect(),
706
+ // ...this.oldConsumers.map((c: AfConsumer) => oldChannel.checkQueue(c.queue)),
707
+ // ]);
708
+ // } catch (e) {
709
+ // logger.error('rabbit: isConnected - false');
710
+ // return false;
711
+ // }
712
+ // logger.debug('rabbit: old isConnected - true');
713
+ // debug('rabbit: start is connected');
714
+ // const consumeConnection = await this.getConnection(this.oldConsumeConnection);
715
+ // const publishConnection = await this.getConnection(this.oldPublishConnection);
716
+ // const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
717
+ // if (!isConnected) {
718
+ // logger.error('rabbit: isConnected - false');
719
+ // return false;
720
+ // }
721
+ // const channel: any = await this.assertChannel({ connection: this.oldPublishConnection });
722
+ // try {
723
+ // await Promise.all([
724
+ // channel.waitForConnect(),
725
+ // ...this.oldConsumers.map((c: AfConsumer) => channel.checkQueue(c.queue)),
726
+ // ]);
727
+ // } catch (e) {
728
+ // logger.error('rabbit: isConnected - false');
729
+ // return false;
730
+ // }
731
+ // logger.debug('rabbit: isConnected - true');
732
+ // return true;
693
733
  }
694
734
  async gracefulShutdown(signal) {
695
735
  // TODO: [QUORUM-PHASE-2] After changing the publish from old to new change from the old to the new implementation
@@ -711,6 +751,7 @@ class RabbitMq {
711
751
  }
712
752
  async consumeFromRabbitOld(queue, callback, options) {
713
753
  const optionsWithDefaults = { ...consts_1.DEFAULT_OPTIONS, ...options };
754
+ debug('rabbit: consumeFromRabbitOld', { queue });
714
755
  RabbitMq.validateName('queue', queue);
715
756
  this.saveConsumerOld(queue, callback, options);
716
757
  const uniqueId = (0, node_crypto_1.randomUUID)();
@@ -802,6 +843,12 @@ class RabbitMq {
802
843
  // TODO: [QUORUM-PHASE-3] Delete all the function under this line (getNewChannelOld, getConnectionOld, assertQueueOld, setupQueueOld, saveConsumerOld)
803
844
  async getNewChannelOld({ name = (0, utils_1.rand)().toString(), onClose = null, options = {}, connection, }) {
804
845
  let localConnection;
846
+ if (connection === this.oldPublishConnection) {
847
+ debug('rabbit: getConnectionOld publish', { connection });
848
+ }
849
+ else if (connection === this.oldConsumeConnection) {
850
+ debug('rabbit: getConnectionOld consume', { connection });
851
+ }
805
852
  try {
806
853
  localConnection = await this.getConnectionOld(connection);
807
854
  }
@@ -809,8 +856,11 @@ class RabbitMq {
809
856
  logger_1.default.error(`rabbit: error on get connection for new channel ${name} `, { e });
810
857
  throw e;
811
858
  }
859
+ if (!localConnection) {
860
+ throw new Error(`rabbit: couldnt get connection for new channel ${name}`);
861
+ }
812
862
  debug('rabbit: getNewChannelOld', { localConnection });
813
- const channel = localConnection.createChannel({ ...options });
863
+ const channel = localConnection?.createChannel({ ...options });
814
864
  (0, events_1.once)(channel, 'close').then((args) => {
815
865
  logger_1.default.error(`rabbit: channel ${name} closed`);
816
866
  onClose?.(args);
@@ -828,7 +878,12 @@ class RabbitMq {
828
878
  async getConnectionOld(connection) {
829
879
  return new Promise(async (resolve, reject) => {
830
880
  const { connection: connectionLocal, creatingConnection, connectionCreatedEventName, connectionFailedEventName, blockReconnect, } = connection;
831
- debug('rabbit: getConnectionOld', { connectionLocal, creatingConnection, blockReconnect });
881
+ if (connection === this.oldPublishConnection) {
882
+ debug('rabbit: getConnectionOld publish', { connectionLocal, creatingConnection, blockReconnect });
883
+ }
884
+ else if (connection === this.oldConsumeConnection) {
885
+ debug('rabbit: getConnectionOld consume', { connectionLocal, creatingConnection, blockReconnect });
886
+ }
832
887
  if (blockReconnect) {
833
888
  debug('rabbit: block reconnect');
834
889
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -867,6 +922,12 @@ class RabbitMq {
867
922
  findServers,
868
923
  });
869
924
  connection.connection = newConnection;
925
+ if (connection === this.oldPublishConnection) {
926
+ debug('rabbit: oldPublishConnection set');
927
+ }
928
+ else if (connection === this.oldConsumeConnection) {
929
+ debug('rabbit: oldConsumeConnection set');
930
+ }
870
931
  newConnection.on('error', (err) => {
871
932
  logger_1.default.error('rabbit: connection error', { err });
872
933
  if (!isResolved) {
@@ -966,6 +1027,12 @@ class RabbitMq {
966
1027
  return queue;
967
1028
  }
968
1029
  async assertChannelOld({ force = false, connection }) {
1030
+ if (connection === this.oldPublishConnection) {
1031
+ debug('rabbit: assertChannelOld publish', { force, promiseSetup: this.oldPublishChannelSetupPromise });
1032
+ }
1033
+ else if (connection === this.oldConsumeConnection) {
1034
+ debug('rabbit: assertChannelOld consume', { force, promiseSetup: this.oldPublishChannelSetupPromise });
1035
+ }
969
1036
  if (!this.oldPublishChannelSetupPromise) {
970
1037
  this.oldPublishChannelSetupPromise = new Promise(async (resolve, reject) => {
971
1038
  if (this.oldPublishChannel && !force) {
@@ -973,6 +1040,12 @@ class RabbitMq {
973
1040
  }
974
1041
  try {
975
1042
  const channel = await this.getNewChannelOld({ connection });
1043
+ if (connection === this.oldPublishConnection) {
1044
+ debug('rabbit: old new channel got publish', { force, channel });
1045
+ }
1046
+ else if (connection === this.oldConsumeConnection) {
1047
+ debug('rabbit: old new channel got consume', { force, channel });
1048
+ }
976
1049
  channel.on('error', (err) => {
977
1050
  logger_1.default.error('rabbit: channel error', { err });
978
1051
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autofleet/rabbit",
3
- "version": "3.4.0-beta.1",
3
+ "version": "3.4.0-beta.11",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "engines": {
package/src/index.ts CHANGED
@@ -258,15 +258,15 @@ class RabbitMq implements IAfRabbitMq {
258
258
  this.oldPublishConnection = {
259
259
  connection: null,
260
260
  creatingConnection: false,
261
- connectionCreatedEventName: 'publishConnectionCreated',
262
- connectionFailedEventName: 'publishConnectionFailed',
261
+ connectionCreatedEventName: 'oldPublishConnectionCreated',
262
+ connectionFailedEventName: 'oldPublishConnectionFailed',
263
263
  blockReconnect: false,
264
264
  };
265
265
  this.oldConsumeConnection = {
266
266
  connection: null,
267
267
  creatingConnection: false,
268
- connectionCreatedEventName: 'consumeConnectionCreated',
269
- connectionFailedEventName: 'consumeConnectionFailed',
268
+ connectionCreatedEventName: 'oldConsumeConnectionCreated',
269
+ connectionFailedEventName: 'oldConsumeConnectionFailed',
270
270
  blockReconnect: false,
271
271
  };
272
272
  this.oldCreatingConnection = false;
@@ -415,6 +415,11 @@ class RabbitMq implements IAfRabbitMq {
415
415
  connectionFailedEventName,
416
416
  blockReconnect,
417
417
  } = connection;
418
+ if (connection === this.publishConnection) {
419
+ debug('rabbit: getConnection publish', { connectionLocal, creatingConnection, blockReconnect });
420
+ } else if (connection === this.consumeConnection) {
421
+ debug('rabbit: getConnection consume', { connectionLocal, creatingConnection, blockReconnect });
422
+ }
418
423
  if (blockReconnect) {
419
424
  debug('rabbit: block reconnect');
420
425
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -457,6 +462,11 @@ class RabbitMq implements IAfRabbitMq {
457
462
  });
458
463
 
459
464
  connection.connection = newConnection;
465
+ if (connection === this.publishConnection) {
466
+ debug('rabbit: publishConnection set');
467
+ } else if (connection === this.consumeConnection) {
468
+ debug('rabbit: consumeConnection set');
469
+ }
460
470
  newConnection.on('error', (err) => {
461
471
  logger.error('rabbit: connection error', { err });
462
472
  if (!isResolved) {
@@ -508,7 +518,12 @@ class RabbitMq implements IAfRabbitMq {
508
518
  logger.error(`rabbit: error on get connection for new channel ${name} `, { e });
509
519
  throw e;
510
520
  }
511
- const channel = localConnection.createChannel({ ...options });
521
+ if (connection === this.publishConnection) {
522
+ debug('rabbit: getNewChannel publish', { localConnection });
523
+ } else if (connection === this.consumeConnection) {
524
+ debug('rabbit: getNewChannel consume', { localConnection });
525
+ }
526
+ const channel = localConnection?.createChannel({ ...options });
512
527
  once(channel, 'close').then((args) => {
513
528
  logger.error(`rabbit: channel ${name} closed`);
514
529
  onClose?.(args);
@@ -677,10 +692,10 @@ class RabbitMq implements IAfRabbitMq {
677
692
  // Used by the microservices to consume messages from the queue
678
693
  async consume(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<any> {
679
694
  // TODO: [QUORUM-PHASE-3] Use only the implementation of consumeNew and delete consumeNew and consumeOld
680
- if (options?.isQuorumQueue !== false) {
681
- await this.assertVHost();
682
- await this.consumeNew(queue, callback, options);
683
- }
695
+ // if (options?.isQuorumQueue !== false) {
696
+ // await this.assertVHost();
697
+ // await this.consumeNew(queue, callback, options);
698
+ // }
684
699
 
685
700
  await this.consumeOld(queue, callback, options);
686
701
  }
@@ -848,28 +863,28 @@ class RabbitMq implements IAfRabbitMq {
848
863
  ),
849
864
  ]);
850
865
  });
866
+ } else {
867
+ // TODO: [QUORUM-PHASE-3] Delete the old implementation
868
+ await this.saveConsumerOld(queue, callback, options);
869
+ const channelOld: ChannelWrapper = await this.getNewChannelOld({
870
+ name: `consume-exchange-${exchange}-queue-${queue}-old`,
871
+ connection: this.oldConsumeConnection,
872
+ });
873
+ await channelOld.addSetup(async (c: ConfirmChannel) => {
874
+ const assertExchange = await assertExchangeFanout(c, exchange);
875
+ await c.assertQueue(queue);
876
+ this.oldExchanges[exchange] = assertExchange;
877
+ await c.prefetch(limit, false);
878
+ return Promise.all([
879
+ c.bindQueue(queue, exchange, ''),
880
+ this.consumeOld(
881
+ queue,
882
+ callback,
883
+ options,
884
+ ),
885
+ ]);
886
+ });
851
887
  }
852
-
853
- // TODO: [QUORUM-PHASE-3] Delete the old implementation
854
- await this.saveConsumerOld(queue, callback, options);
855
- const channelOld: ChannelWrapper = await this.getNewChannelOld({
856
- name: `consume-exchange-${exchange}-queue-${queue}-old`,
857
- connection: this.oldConsumeConnection,
858
- });
859
- await channelOld.addSetup(async (c: ConfirmChannel) => {
860
- const assertExchange = await assertExchangeFanout(c, exchange);
861
- await c.assertQueue(queue);
862
- this.oldExchanges[exchange] = assertExchange;
863
- await c.prefetch(limit, false);
864
- return Promise.all([
865
- c.bindQueue(queue, exchange, ''),
866
- this.consumeOld(
867
- queue,
868
- callback,
869
- options,
870
- ),
871
- ]);
872
- });
873
888
  }
874
889
 
875
890
  // Used by the microservices to publish messages to the exchange
@@ -923,26 +938,48 @@ class RabbitMq implements IAfRabbitMq {
923
938
 
924
939
  // TODO: [QUORUM-PHASE-2] After changing the publish from old to new change from the old to the new implementation
925
940
  async isConnected() : Promise<boolean> {
926
- debug('rabbit: start is connected');
927
- const consumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
928
- const publishConnection = await this.getConnectionOld(this.oldPublishConnection);
929
- const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
930
- if (!isConnected) {
931
- logger.error('rabbit: isConnected - false');
932
- return false;
933
- }
934
- const channel: any = await this.assertChannelOld({ connection: this.oldPublishConnection });
935
- try {
936
- await Promise.all([
937
- channel.waitForConnect(),
938
- ...this.oldConsumers.map((c: AfConsumer) => channel.checkQueue(c.queue)),
939
- ]);
940
- } catch (e) {
941
- logger.error('rabbit: isConnected - false');
942
- return false;
943
- }
944
- logger.debug('rabbit: isConnected - true');
941
+ debug('rabbit: start old is connected', { connection: this.oldPublishConnection.connectionCreatedEventName });
945
942
  return true;
943
+ // debug('rabbit: start old is connected');
944
+ // const oldConsumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
945
+ // const oldPublishConnection = await this.getConnectionOld(this.oldPublishConnection);
946
+ // const oldIsConnected = oldConsumeConnection.isConnected() && oldPublishConnection.isConnected();
947
+ // if (!oldIsConnected) {
948
+ // logger.error('rabbit: isConnected - false');
949
+ // return false;
950
+ // }
951
+ // const oldChannel: any = await this.assertChannelOld({ connection: this.oldPublishConnection });
952
+ // try {
953
+ // await Promise.all([
954
+ // oldChannel.waitForConnect(),
955
+ // ...this.oldConsumers.map((c: AfConsumer) => oldChannel.checkQueue(c.queue)),
956
+ // ]);
957
+ // } catch (e) {
958
+ // logger.error('rabbit: isConnected - false');
959
+ // return false;
960
+ // }
961
+ // logger.debug('rabbit: old isConnected - true');
962
+
963
+ // debug('rabbit: start is connected');
964
+ // const consumeConnection = await this.getConnection(this.oldConsumeConnection);
965
+ // const publishConnection = await this.getConnection(this.oldPublishConnection);
966
+ // const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
967
+ // if (!isConnected) {
968
+ // logger.error('rabbit: isConnected - false');
969
+ // return false;
970
+ // }
971
+ // const channel: any = await this.assertChannel({ connection: this.oldPublishConnection });
972
+ // try {
973
+ // await Promise.all([
974
+ // channel.waitForConnect(),
975
+ // ...this.oldConsumers.map((c: AfConsumer) => channel.checkQueue(c.queue)),
976
+ // ]);
977
+ // } catch (e) {
978
+ // logger.error('rabbit: isConnected - false');
979
+ // return false;
980
+ // }
981
+ // logger.debug('rabbit: isConnected - true');
982
+ // return true;
946
983
  }
947
984
 
948
985
  async gracefulShutdown(signal: string) : Promise<void> {
@@ -965,6 +1002,7 @@ class RabbitMq implements IAfRabbitMq {
965
1002
 
966
1003
  private async consumeFromRabbitOld(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<any> {
967
1004
  const optionsWithDefaults = { ...DEFAULT_OPTIONS, ...options };
1005
+ debug('rabbit: consumeFromRabbitOld', { queue });
968
1006
  RabbitMq.validateName('queue', queue);
969
1007
  this.saveConsumerOld(queue, callback, options);
970
1008
  const uniqueId = randomUUID();
@@ -1072,14 +1110,24 @@ class RabbitMq implements IAfRabbitMq {
1072
1110
  name = rand().toString(), onClose = null, options = {}, connection,
1073
1111
  }: newChannelOpts) {
1074
1112
  let localConnection!: AmqpConnectionManager;
1113
+ if (connection === this.oldPublishConnection) {
1114
+ debug('rabbit: getConnectionOld publish', { connection });
1115
+ } else if (connection === this.oldConsumeConnection) {
1116
+ debug('rabbit: getConnectionOld consume', { connection });
1117
+ }
1075
1118
  try {
1076
1119
  localConnection = await this.getConnectionOld(connection);
1077
1120
  } catch (e) {
1078
1121
  logger.error(`rabbit: error on get connection for new channel ${name} `, { e });
1079
1122
  throw e;
1080
1123
  }
1124
+
1125
+ if (!localConnection) {
1126
+ throw new Error(`rabbit: couldnt get connection for new channel ${name}`);
1127
+ }
1128
+
1081
1129
  debug('rabbit: getNewChannelOld', { localConnection });
1082
- const channel = localConnection.createChannel({ ...options });
1130
+ const channel = localConnection?.createChannel({ ...options });
1083
1131
  once(channel, 'close').then((args) => {
1084
1132
  logger.error(`rabbit: channel ${name} closed`);
1085
1133
  onClose?.(args);
@@ -1103,7 +1151,12 @@ class RabbitMq implements IAfRabbitMq {
1103
1151
  connectionFailedEventName,
1104
1152
  blockReconnect,
1105
1153
  } = connection;
1106
- debug('rabbit: getConnectionOld', { connectionLocal, creatingConnection, blockReconnect });
1154
+
1155
+ if (connection === this.oldPublishConnection) {
1156
+ debug('rabbit: getConnectionOld publish', { connectionLocal, creatingConnection, blockReconnect });
1157
+ } else if (connection === this.oldConsumeConnection) {
1158
+ debug('rabbit: getConnectionOld consume', { connectionLocal, creatingConnection, blockReconnect });
1159
+ }
1107
1160
  if (blockReconnect) {
1108
1161
  debug('rabbit: block reconnect');
1109
1162
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -1147,6 +1200,11 @@ class RabbitMq implements IAfRabbitMq {
1147
1200
  });
1148
1201
 
1149
1202
  connection.connection = newConnection;
1203
+ if (connection === this.oldPublishConnection) {
1204
+ debug('rabbit: oldPublishConnection set');
1205
+ } else if (connection === this.oldConsumeConnection) {
1206
+ debug('rabbit: oldConsumeConnection set');
1207
+ }
1150
1208
  newConnection.on('error', (err) => {
1151
1209
  logger.error('rabbit: connection error', { err });
1152
1210
  if (!isResolved) {
@@ -1254,6 +1312,11 @@ class RabbitMq implements IAfRabbitMq {
1254
1312
  }
1255
1313
 
1256
1314
  async assertChannelOld({ force = false, connection }: assertChannelOpts): Promise<ChannelWrapper> {
1315
+ if (connection === this.oldPublishConnection) {
1316
+ debug('rabbit: assertChannelOld publish', { force, promiseSetup: this.oldPublishChannelSetupPromise });
1317
+ } else if (connection === this.oldConsumeConnection) {
1318
+ debug('rabbit: assertChannelOld consume', { force, promiseSetup: this.oldPublishChannelSetupPromise });
1319
+ }
1257
1320
  if (!this.oldPublishChannelSetupPromise) {
1258
1321
  this.oldPublishChannelSetupPromise = new Promise<ChannelWrapper>(async (resolve, reject) => {
1259
1322
  if (this.oldPublishChannel && !force) {
@@ -1262,6 +1325,11 @@ class RabbitMq implements IAfRabbitMq {
1262
1325
 
1263
1326
  try {
1264
1327
  const channel = await this.getNewChannelOld({ connection });
1328
+ if (connection === this.oldPublishConnection) {
1329
+ debug('rabbit: old new channel got publish', { force, channel });
1330
+ } else if (connection === this.oldConsumeConnection) {
1331
+ debug('rabbit: old new channel got consume', { force, channel });
1332
+ }
1265
1333
  channel.on('error', (err) => {
1266
1334
  logger.error('rabbit: channel error', { err });
1267
1335
  });