@autofleet/rabbit 3.4.0-beta.8 → 3.4.0
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/index.d.ts +3 -3
- package/dist/index.js +58 -100
- package/dist/index.js.map +1 -0
- package/dist/lib/celery.js +1 -0
- package/dist/lib/celery.js.map +1 -0
- package/dist/lib/consts.js +1 -0
- package/dist/lib/consts.js.map +1 -0
- package/dist/lib/rabbitError.js +1 -0
- package/dist/lib/rabbitError.js.map +1 -0
- package/dist/lib/redis.js +1 -0
- package/dist/lib/redis.js.map +1 -0
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -0
- package/dist/{mock.d.ts → mock/index.d.ts} +1 -1
- package/dist/{mock.js → mock/index.js} +2 -1
- package/dist/mock/index.js.map +1 -0
- package/dist/mock/vitest.d.ts +13 -0
- package/dist/mock/vitest.js +18 -0
- package/dist/mock/vitest.js.map +1 -0
- package/package.json +22 -15
- package/src/index.ts +72 -106
- package/src/lib/types.ts +1 -1
- package/src/{mock.ts → mock/index.ts} +2 -2
- package/src/mock/vitest.ts +24 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +2 -2
- package/vitest.config.ts +16 -0
package/dist/index.d.ts
CHANGED
|
@@ -62,7 +62,6 @@ declare class RabbitMq implements IAfRabbitMq {
|
|
|
62
62
|
publishChannel: ChannelWrapper | null;
|
|
63
63
|
publishChannelSetupPromise: Promise<ChannelWrapper> | null;
|
|
64
64
|
blockReconnect: boolean | null | undefined;
|
|
65
|
-
connection: AmqpConnectionManager | null | undefined;
|
|
66
65
|
publishConnection: ConnectionData;
|
|
67
66
|
consumeConnection: ConnectionData;
|
|
68
67
|
em: EventEmitter;
|
|
@@ -98,7 +97,7 @@ declare class RabbitMq implements IAfRabbitMq {
|
|
|
98
97
|
ack: (channel: ConfirmChannel, msg: ConsumeMessageOrNull, shouldUpdateRedisTimestamp?: boolean, releaseLock?: null) => (userMsg: ConsumeMessage) => Promise<any>;
|
|
99
98
|
nack: (channel: ConfirmChannel, queue: string, options: any, deadQueueOptions: Options.AssertQueue, msg: ConsumeMessageOrNull, releaseLock: any) => (userMsg: ConsumeMessageOrNull, { skipRetry, }?: NackOptions) => Promise<any>;
|
|
100
99
|
getConnection(connection: ConnectionData): Promise<AmqpConnectionManager>;
|
|
101
|
-
getNewChannel({ name, onClose, options, connection, }: newChannelOpts): Promise<ChannelWrapper>;
|
|
100
|
+
getNewChannel({ name, onClose, options, connection, }: newChannelOpts): Promise<import("amqp-connection-manager/dist/types/ChannelWrapper").default>;
|
|
102
101
|
assertChannel({ force, connection }: assertChannelOpts): Promise<ChannelWrapper>;
|
|
103
102
|
assertExchange(exchangeName: string, connection: ConnectionData): Promise<any>;
|
|
104
103
|
getQueueLength(queue: string): Promise<Replies.AssertQueue>;
|
|
@@ -120,7 +119,7 @@ declare class RabbitMq implements IAfRabbitMq {
|
|
|
120
119
|
isConnected(): Promise<boolean>;
|
|
121
120
|
gracefulShutdown(signal: string): Promise<void>;
|
|
122
121
|
private consumeFromRabbitOld;
|
|
123
|
-
getNewChannelOld({ name, onClose, options, connection, }: newChannelOpts): Promise<ChannelWrapper>;
|
|
122
|
+
getNewChannelOld({ name, onClose, options, connection, }: newChannelOpts): Promise<import("amqp-connection-manager/dist/types/ChannelWrapper").default>;
|
|
124
123
|
getConnectionOld(connection: ConnectionData): Promise<AmqpConnectionManager>;
|
|
125
124
|
private saveConsumerOld;
|
|
126
125
|
assertQueueOld(queueName: string, options?: Options.AssertQueue): Promise<any>;
|
|
@@ -128,6 +127,7 @@ declare class RabbitMq implements IAfRabbitMq {
|
|
|
128
127
|
assertChannelOld({ force, connection }: assertChannelOpts): Promise<ChannelWrapper>;
|
|
129
128
|
private deleteQueueOld;
|
|
130
129
|
assertExchangeOld(exchangeName: string, connection: ConnectionData): Promise<any>;
|
|
130
|
+
private maskURL;
|
|
131
131
|
}
|
|
132
132
|
export default RabbitMq;
|
|
133
133
|
export { sendCeleryTaskViaHttp, } from './lib/celery';
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,8 @@ const types_1 = require("./lib/types");
|
|
|
21
21
|
// const debug = nodeDebug('af-rabbitmq')
|
|
22
22
|
const debug = logger_1.default.debug.bind(logger_1.default);
|
|
23
23
|
const PUBLISH_TIMEOUT = 1000 * 10;
|
|
24
|
+
// TODO: [QUORUM-PHASE-3] Delete this env var
|
|
25
|
+
const { DISABLE_QUORUM_QUEUES, } = process.env;
|
|
24
26
|
const HEARTBEAT = '60';
|
|
25
27
|
class RabbitMq {
|
|
26
28
|
static parseMsg(msg) {
|
|
@@ -136,11 +138,11 @@ class RabbitMq {
|
|
|
136
138
|
await this.unlockRedisIfNeeded(releaseLock);
|
|
137
139
|
if (channel && msg) {
|
|
138
140
|
if (!skipRetry
|
|
139
|
-
&& (!msg.properties.headers[consts_1.RETRY_HEADER]
|
|
141
|
+
&& (!msg.properties.headers?.[consts_1.RETRY_HEADER]
|
|
140
142
|
|| parseInt(msg.properties.headers[consts_1.RETRY_HEADER], 10) < options.retries)) {
|
|
141
143
|
await this.sendToQueue(queue, RabbitMq.parseMsg(msg).content, options, {
|
|
142
144
|
...msg.properties.headers,
|
|
143
|
-
[consts_1.RETRY_HEADER]: msg.properties.headers[consts_1.RETRY_HEADER]
|
|
145
|
+
[consts_1.RETRY_HEADER]: msg.properties.headers?.[consts_1.RETRY_HEADER]
|
|
144
146
|
? msg.properties.headers[consts_1.RETRY_HEADER] + 1
|
|
145
147
|
: 1,
|
|
146
148
|
});
|
|
@@ -149,7 +151,7 @@ class RabbitMq {
|
|
|
149
151
|
const deadQueue = `${queue}-dead`;
|
|
150
152
|
await this.sendToQueue(deadQueue, RabbitMq.parseMsg(msg).content, deadQueueOptions, {
|
|
151
153
|
...msg.properties.headers,
|
|
152
|
-
[consts_1.RETRY_HEADER]: msg.properties.headers[consts_1.RETRY_HEADER]
|
|
154
|
+
[consts_1.RETRY_HEADER]: msg.properties.headers?.[consts_1.RETRY_HEADER]
|
|
153
155
|
? msg.properties.headers[consts_1.RETRY_HEADER] + 1
|
|
154
156
|
: 1,
|
|
155
157
|
});
|
|
@@ -163,19 +165,29 @@ class RabbitMq {
|
|
|
163
165
|
});
|
|
164
166
|
}
|
|
165
167
|
};
|
|
168
|
+
this.maskURL = (url) => {
|
|
169
|
+
try {
|
|
170
|
+
const urlObj = new URL(url);
|
|
171
|
+
urlObj.username = '***';
|
|
172
|
+
urlObj.password = '***';
|
|
173
|
+
return urlObj.toString();
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return url;
|
|
177
|
+
}
|
|
178
|
+
};
|
|
166
179
|
this.em = new events_1.EventEmitter();
|
|
167
180
|
this.publishChannel = null;
|
|
168
181
|
this.publishChannelSetupPromise = null;
|
|
169
|
-
this.connection = null;
|
|
170
182
|
this.publishConnection = {
|
|
171
|
-
|
|
183
|
+
amqpConnection: null,
|
|
172
184
|
creatingConnection: false,
|
|
173
185
|
connectionCreatedEventName: 'publishConnectionCreated',
|
|
174
186
|
connectionFailedEventName: 'publishConnectionFailed',
|
|
175
187
|
blockReconnect: false,
|
|
176
188
|
};
|
|
177
189
|
this.consumeConnection = {
|
|
178
|
-
|
|
190
|
+
amqpConnection: null,
|
|
179
191
|
creatingConnection: false,
|
|
180
192
|
connectionCreatedEventName: 'consumeConnectionCreated',
|
|
181
193
|
connectionFailedEventName: 'consumeConnectionFailed',
|
|
@@ -207,17 +219,17 @@ class RabbitMq {
|
|
|
207
219
|
this.oldPublishChannel = null;
|
|
208
220
|
this.oldPublishChannelSetupPromise = null;
|
|
209
221
|
this.oldPublishConnection = {
|
|
210
|
-
|
|
222
|
+
amqpConnection: null,
|
|
211
223
|
creatingConnection: false,
|
|
212
|
-
connectionCreatedEventName: '
|
|
213
|
-
connectionFailedEventName: '
|
|
224
|
+
connectionCreatedEventName: 'oldPublishConnectionCreated',
|
|
225
|
+
connectionFailedEventName: 'oldPublishConnectionFailed',
|
|
214
226
|
blockReconnect: false,
|
|
215
227
|
};
|
|
216
228
|
this.oldConsumeConnection = {
|
|
217
|
-
|
|
229
|
+
amqpConnection: null,
|
|
218
230
|
creatingConnection: false,
|
|
219
|
-
connectionCreatedEventName: '
|
|
220
|
-
connectionFailedEventName: '
|
|
231
|
+
connectionCreatedEventName: 'oldConsumeConnectionCreated',
|
|
232
|
+
connectionFailedEventName: 'oldConsumeConnectionFailed',
|
|
221
233
|
blockReconnect: false,
|
|
222
234
|
};
|
|
223
235
|
this.oldCreatingConnection = false;
|
|
@@ -230,7 +242,7 @@ class RabbitMq {
|
|
|
230
242
|
}
|
|
231
243
|
async getConnection(connection) {
|
|
232
244
|
return new Promise(async (resolve, reject) => {
|
|
233
|
-
const {
|
|
245
|
+
const { amqpConnection: connectionLocal, creatingConnection, connectionCreatedEventName, connectionFailedEventName, blockReconnect, } = connection;
|
|
234
246
|
if (blockReconnect) {
|
|
235
247
|
debug('rabbit: block reconnect');
|
|
236
248
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -268,13 +280,7 @@ class RabbitMq {
|
|
|
268
280
|
const newConnection = await (0, amqp_connection_manager_1.connect)(defaultUrls, {
|
|
269
281
|
findServers,
|
|
270
282
|
});
|
|
271
|
-
connection.
|
|
272
|
-
if (connection === this.publishConnection) {
|
|
273
|
-
debug('rabbit: publishConnection set');
|
|
274
|
-
}
|
|
275
|
-
else if (connection === this.consumeConnection) {
|
|
276
|
-
debug('rabbit: consumeConnection set');
|
|
277
|
-
}
|
|
283
|
+
connection.amqpConnection = newConnection;
|
|
278
284
|
newConnection.on('error', (err) => {
|
|
279
285
|
logger_1.default.error('rabbit: connection error', { err });
|
|
280
286
|
if (!isResolved) {
|
|
@@ -285,6 +291,9 @@ class RabbitMq {
|
|
|
285
291
|
});
|
|
286
292
|
newConnection.on('connectFailed', (err) => {
|
|
287
293
|
this.consumersTags = [];
|
|
294
|
+
if (typeof err.url === 'string') {
|
|
295
|
+
err.url = this.maskURL(err.url);
|
|
296
|
+
}
|
|
288
297
|
logger_1.default.error('rabbit: connection connectFailed', { err, advice: 'Check if the vhost exist', vhost: this.vhost });
|
|
289
298
|
if (!isResolved) {
|
|
290
299
|
isResolved = true;
|
|
@@ -307,7 +316,7 @@ class RabbitMq {
|
|
|
307
316
|
newConnection.once('connect', async () => {
|
|
308
317
|
debug('rabbit: connection established');
|
|
309
318
|
connection.creatingConnection = false;
|
|
310
|
-
this.em.emit(connectionCreatedEventName,
|
|
319
|
+
this.em.emit(connectionCreatedEventName, newConnection);
|
|
311
320
|
isResolved = true;
|
|
312
321
|
resolve(newConnection);
|
|
313
322
|
});
|
|
@@ -380,7 +389,7 @@ class RabbitMq {
|
|
|
380
389
|
if (!channel) {
|
|
381
390
|
throw new rabbitError_1.default('channel is not defined');
|
|
382
391
|
}
|
|
383
|
-
debug('rabbit: getting queue length', { queue, connected: this.
|
|
392
|
+
debug('rabbit: getting queue length', { queue, connected: this.oldPublishConnection.amqpConnection?.isConnected() });
|
|
384
393
|
return channel?.checkQueue(queue);
|
|
385
394
|
}
|
|
386
395
|
async deleteQueue(queue, connection) {
|
|
@@ -474,7 +483,7 @@ class RabbitMq {
|
|
|
474
483
|
// Used by the microservices to consume messages from the queue
|
|
475
484
|
async consume(queue, callback, options) {
|
|
476
485
|
// TODO: [QUORUM-PHASE-3] Use only the implementation of consumeNew and delete consumeNew and consumeOld
|
|
477
|
-
if (options?.isQuorumQueue !== false) {
|
|
486
|
+
if (options?.isQuorumQueue !== false && DISABLE_QUORUM_QUEUES !== 'true') {
|
|
478
487
|
await this.assertVHost();
|
|
479
488
|
await this.consumeNew(queue, callback, options);
|
|
480
489
|
}
|
|
@@ -599,7 +608,7 @@ class RabbitMq {
|
|
|
599
608
|
RabbitMq.validateName('queue', queue);
|
|
600
609
|
const { limit, deadMessageTtl } = optionsWithDefaults;
|
|
601
610
|
// TODO: [QUORUM-PHASE-3] Delete the if statement after all the queues are created as quorum queues
|
|
602
|
-
if (options?.isQuorumQueue !== false) {
|
|
611
|
+
if (options?.isQuorumQueue !== false && DISABLE_QUORUM_QUEUES !== 'true') {
|
|
603
612
|
await this.assertVHost();
|
|
604
613
|
await this.saveConsumer(queue, callback, options);
|
|
605
614
|
const channel = await this.getNewChannel({
|
|
@@ -617,24 +626,22 @@ class RabbitMq {
|
|
|
617
626
|
]);
|
|
618
627
|
});
|
|
619
628
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
await
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
});
|
|
637
|
-
}
|
|
629
|
+
// TODO: [QUORUM-PHASE-3] Delete the old implementation
|
|
630
|
+
await this.saveConsumerOld(queue, callback, options);
|
|
631
|
+
const channelOld = await this.getNewChannelOld({
|
|
632
|
+
name: `consume-exchange-${exchange}-queue-${queue}-old`,
|
|
633
|
+
connection: this.oldConsumeConnection,
|
|
634
|
+
});
|
|
635
|
+
await channelOld.addSetup(async (c) => {
|
|
636
|
+
const assertExchange = await (0, utils_1.assertExchangeFanout)(c, exchange);
|
|
637
|
+
await c.assertQueue(queue);
|
|
638
|
+
this.oldExchanges[exchange] = assertExchange;
|
|
639
|
+
await c.prefetch(limit, false);
|
|
640
|
+
return Promise.all([
|
|
641
|
+
c.bindQueue(queue, exchange, ''),
|
|
642
|
+
this.consumeOld(queue, callback, options),
|
|
643
|
+
]);
|
|
644
|
+
});
|
|
638
645
|
}
|
|
639
646
|
// Used by the microservices to publish messages to the exchange
|
|
640
647
|
// TODO: [QUORUM-PHASE-2] Change the implementation to the new one
|
|
@@ -682,7 +689,7 @@ class RabbitMq {
|
|
|
682
689
|
const oldPublishConnection = await this.getConnectionOld(this.oldPublishConnection);
|
|
683
690
|
const oldIsConnected = oldConsumeConnection.isConnected() && oldPublishConnection.isConnected();
|
|
684
691
|
if (!oldIsConnected) {
|
|
685
|
-
logger_1.default.error('rabbit: isConnected - false');
|
|
692
|
+
logger_1.default.error('rabbit: old isConnected - false');
|
|
686
693
|
return false;
|
|
687
694
|
}
|
|
688
695
|
const oldChannel = await this.assertChannelOld({ connection: this.oldPublishConnection });
|
|
@@ -693,30 +700,10 @@ class RabbitMq {
|
|
|
693
700
|
]);
|
|
694
701
|
}
|
|
695
702
|
catch (e) {
|
|
696
|
-
logger_1.default.error('rabbit: isConnected - false');
|
|
703
|
+
logger_1.default.error('rabbit: old isConnected - false');
|
|
697
704
|
return false;
|
|
698
705
|
}
|
|
699
706
|
logger_1.default.debug('rabbit: old isConnected - true');
|
|
700
|
-
debug('rabbit: start is connected');
|
|
701
|
-
const consumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
|
|
702
|
-
const publishConnection = await this.getConnectionOld(this.oldPublishConnection);
|
|
703
|
-
const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
|
|
704
|
-
if (!isConnected) {
|
|
705
|
-
logger_1.default.error('rabbit: isConnected - false');
|
|
706
|
-
return false;
|
|
707
|
-
}
|
|
708
|
-
const channel = await this.assertChannelOld({ connection: this.oldPublishConnection });
|
|
709
|
-
try {
|
|
710
|
-
await Promise.all([
|
|
711
|
-
channel.waitForConnect(),
|
|
712
|
-
...this.oldConsumers.map((c) => channel.checkQueue(c.queue)),
|
|
713
|
-
]);
|
|
714
|
-
}
|
|
715
|
-
catch (e) {
|
|
716
|
-
logger_1.default.error('rabbit: isConnected - false');
|
|
717
|
-
return false;
|
|
718
|
-
}
|
|
719
|
-
logger_1.default.debug('rabbit: isConnected - true');
|
|
720
707
|
return true;
|
|
721
708
|
}
|
|
722
709
|
async gracefulShutdown(signal) {
|
|
@@ -739,7 +726,6 @@ class RabbitMq {
|
|
|
739
726
|
}
|
|
740
727
|
async consumeFromRabbitOld(queue, callback, options) {
|
|
741
728
|
const optionsWithDefaults = { ...consts_1.DEFAULT_OPTIONS, ...options };
|
|
742
|
-
debug('rabbit: consumeFromRabbitOld', { queue });
|
|
743
729
|
RabbitMq.validateName('queue', queue);
|
|
744
730
|
this.saveConsumerOld(queue, callback, options);
|
|
745
731
|
const uniqueId = (0, node_crypto_1.randomUUID)();
|
|
@@ -831,12 +817,6 @@ class RabbitMq {
|
|
|
831
817
|
// TODO: [QUORUM-PHASE-3] Delete all the function under this line (getNewChannelOld, getConnectionOld, assertQueueOld, setupQueueOld, saveConsumerOld)
|
|
832
818
|
async getNewChannelOld({ name = (0, utils_1.rand)().toString(), onClose = null, options = {}, connection, }) {
|
|
833
819
|
let localConnection;
|
|
834
|
-
if (connection === this.oldPublishConnection) {
|
|
835
|
-
debug('rabbit: getConnectionOld publish', { connection });
|
|
836
|
-
}
|
|
837
|
-
else if (connection === this.oldConsumeConnection) {
|
|
838
|
-
debug('rabbit: getConnectionOld consume', { connection });
|
|
839
|
-
}
|
|
840
820
|
try {
|
|
841
821
|
localConnection = await this.getConnectionOld(connection);
|
|
842
822
|
}
|
|
@@ -847,7 +827,6 @@ class RabbitMq {
|
|
|
847
827
|
if (!localConnection) {
|
|
848
828
|
throw new Error(`rabbit: couldnt get connection for new channel ${name}`);
|
|
849
829
|
}
|
|
850
|
-
debug('rabbit: getNewChannelOld', { localConnection });
|
|
851
830
|
const channel = localConnection?.createChannel({ ...options });
|
|
852
831
|
(0, events_1.once)(channel, 'close').then((args) => {
|
|
853
832
|
logger_1.default.error(`rabbit: channel ${name} closed`);
|
|
@@ -865,13 +844,7 @@ class RabbitMq {
|
|
|
865
844
|
}
|
|
866
845
|
async getConnectionOld(connection) {
|
|
867
846
|
return new Promise(async (resolve, reject) => {
|
|
868
|
-
const {
|
|
869
|
-
if (connection === this.oldPublishConnection) {
|
|
870
|
-
debug('rabbit: getConnectionOld publish', { connectionLocal, creatingConnection, blockReconnect });
|
|
871
|
-
}
|
|
872
|
-
else if (connection === this.oldConsumeConnection) {
|
|
873
|
-
debug('rabbit: getConnectionOld consume', { connectionLocal, creatingConnection, blockReconnect });
|
|
874
|
-
}
|
|
847
|
+
const { amqpConnection: connectionLocal, creatingConnection, connectionCreatedEventName, connectionFailedEventName, blockReconnect, } = connection;
|
|
875
848
|
if (blockReconnect) {
|
|
876
849
|
debug('rabbit: block reconnect');
|
|
877
850
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -909,13 +882,7 @@ class RabbitMq {
|
|
|
909
882
|
const newConnection = await (0, amqp_connection_manager_1.connect)(defaultUrls, {
|
|
910
883
|
findServers,
|
|
911
884
|
});
|
|
912
|
-
connection.
|
|
913
|
-
if (connection === this.oldPublishConnection) {
|
|
914
|
-
debug('rabbit: oldPublishConnection set');
|
|
915
|
-
}
|
|
916
|
-
else if (connection === this.oldConsumeConnection) {
|
|
917
|
-
debug('rabbit: oldConsumeConnection set');
|
|
918
|
-
}
|
|
885
|
+
connection.amqpConnection = newConnection;
|
|
919
886
|
newConnection.on('error', (err) => {
|
|
920
887
|
logger_1.default.error('rabbit: connection error', { err });
|
|
921
888
|
if (!isResolved) {
|
|
@@ -926,6 +893,9 @@ class RabbitMq {
|
|
|
926
893
|
});
|
|
927
894
|
newConnection.on('connectFailed', (err) => {
|
|
928
895
|
this.oldConsumersTags = [];
|
|
896
|
+
if (typeof err.url === 'string') {
|
|
897
|
+
err.url = this.maskURL(err.url);
|
|
898
|
+
}
|
|
929
899
|
logger_1.default.error('rabbit: connection connectFailed', { err });
|
|
930
900
|
if (!isResolved) {
|
|
931
901
|
isResolved = true;
|
|
@@ -947,7 +917,7 @@ class RabbitMq {
|
|
|
947
917
|
newConnection.once('connect', async () => {
|
|
948
918
|
debug('rabbit: connection established');
|
|
949
919
|
connection.creatingConnection = false;
|
|
950
|
-
this.oldEm.emit(connectionCreatedEventName,
|
|
920
|
+
this.oldEm.emit(connectionCreatedEventName, newConnection);
|
|
951
921
|
isResolved = true;
|
|
952
922
|
resolve(newConnection);
|
|
953
923
|
});
|
|
@@ -1015,12 +985,6 @@ class RabbitMq {
|
|
|
1015
985
|
return queue;
|
|
1016
986
|
}
|
|
1017
987
|
async assertChannelOld({ force = false, connection }) {
|
|
1018
|
-
if (connection === this.oldPublishConnection) {
|
|
1019
|
-
debug('rabbit: assertChannelOld publish', { force, promiseSetup: this.oldPublishChannelSetupPromise });
|
|
1020
|
-
}
|
|
1021
|
-
else if (connection === this.oldConsumeConnection) {
|
|
1022
|
-
debug('rabbit: assertChannelOld consume', { force, promiseSetup: this.oldPublishChannelSetupPromise });
|
|
1023
|
-
}
|
|
1024
988
|
if (!this.oldPublishChannelSetupPromise) {
|
|
1025
989
|
this.oldPublishChannelSetupPromise = new Promise(async (resolve, reject) => {
|
|
1026
990
|
if (this.oldPublishChannel && !force) {
|
|
@@ -1028,17 +992,10 @@ class RabbitMq {
|
|
|
1028
992
|
}
|
|
1029
993
|
try {
|
|
1030
994
|
const channel = await this.getNewChannelOld({ connection });
|
|
1031
|
-
if (connection === this.oldPublishConnection) {
|
|
1032
|
-
debug('rabbit: old new channel got publish', { force, channel });
|
|
1033
|
-
}
|
|
1034
|
-
else if (connection === this.oldConsumeConnection) {
|
|
1035
|
-
debug('rabbit: old new channel got consume', { force, channel });
|
|
1036
|
-
}
|
|
1037
995
|
channel.on('error', (err) => {
|
|
1038
996
|
logger_1.default.error('rabbit: channel error', { err });
|
|
1039
997
|
});
|
|
1040
998
|
if (this.oldPublishConnection === connection) {
|
|
1041
|
-
debug('rabbit: a new channel assigned to the oldPublishChannel', { connection });
|
|
1042
999
|
this.oldPublishChannel = channel;
|
|
1043
1000
|
}
|
|
1044
1001
|
resolve(channel);
|
|
@@ -1075,3 +1032,4 @@ class RabbitMq {
|
|
|
1075
1032
|
exports.default = RabbitMq;
|
|
1076
1033
|
var celery_1 = require("./lib/celery");
|
|
1077
1034
|
Object.defineProperty(exports, "sendCeleryTaskViaHttp", { enumerable: true, get: function () { return celery_1.sendCeleryTaskViaHttp; } });
|
|
1035
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/celery.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"celery.js","sourceRoot":"","sources":["../../src/lib/celery.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AACzC,uDAA+B;AAC/B,4BAA4B;AAC5B,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,WAAW;IACtD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO;CAC1C,CAAC;AAoCX,KAAK,UAAU,qBAAqB,CAClC,IAAc,EACd,EAAE,QAAQ,EAAE,SAAS,EAAmB;IAExC,MAAM,MAAM,GAAG,UAAU,MAAM,CAAC,IAAI,8CAA8C,CAAC;IAEnF,MAAM,OAAO,GAAgB;QAC3B,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,IAAA,wBAAU,GAAE;QAChB,IAAI,EAAE,CAAC,IAAI,CAAC;KACb,CAAC;IAEF,MAAM,OAAO,GAAmB;QAC9B,UAAU,EAAE;YACV,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,kBAAkB;SACjC;QACD,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,gBAAgB,EAAE,QAAQ;KAC3B,CAAC;IAEF,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;aAClG;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,MAAM,MAAM,GAAoB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtD,gBAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;SACxD;aAAM;YACL,gBAAM,CAAC,KAAK,CAAC,2CAA2C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,gBAAM,CAAC,KAAK,CAAC,aAAa,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACpD;KACF;IAAC,OAAO,KAAK,EAAE;QACd,gBAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/F,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAEQ,sDAAqB"}
|
package/dist/lib/consts.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/lib/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;AAC5C,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC;AAChC,QAAA,YAAY,GAAG,eAAe,CAAC;AAC/B,QAAA,cAAc,GAAG,YAAY,CAAC;AAC9B,QAAA,mBAAmB,GAAG,cAAc,CAAC;AACrC,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAC5C,QAAA,WAAW,GAAG,YAAY,CAAC;AAC3B,QAAA,6BAA6B,GAAG,KAAK,CAAC;AACtC,QAAA,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,iCAAyB;IACzC,WAAW,EAAE,4BAAoB;IACjC,kBAAkB,EAAE,qCAA6B;IACjD,YAAY,EAAE,IAAI;IAClB,iBAAiB,EAAE,KAAK;CACzB,CAAC"}
|
package/dist/lib/rabbitError.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbitError.js","sourceRoot":"","sources":["../../src/lib/rabbitError.ts"],"names":[],"mappings":";;AAAA,MAAqB,WAAY,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,8BAKC"}
|
package/dist/lib/redis.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/lib/redis.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/B,kBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACnD,kBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAQ7C,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAO,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAElF,kBAAe,gBAAgB,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export type AfConsumer = {
|
|
|
44
44
|
};
|
|
45
45
|
export declare const CONSUMER_DEFAULT_OPTIONS: Options.Consume;
|
|
46
46
|
export type ConnectionData = {
|
|
47
|
-
|
|
47
|
+
amqpConnection: AmqpConnectionManager | null;
|
|
48
48
|
creatingConnection: boolean;
|
|
49
49
|
connectionCreatedEventName: string;
|
|
50
50
|
connectionFailedEventName: string;
|
package/dist/lib/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":";;;AAsDA,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE3C,QAAA,wBAAwB,GAAoB;IACvD,SAAS,EAAE;QACT,CAAC,qBAAqB,CAAC,EAAE,QAAQ;QACjC,CAAC,sBAAsB,CAAC,EAAE,QAAQ;KACnC;CACF,CAAC"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;AAGO,MAAM,oBAAoB,GAAG,KAAK,EACvC,CAAkC,EAClC,YAAoB,EACa,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAHlE,QAAA,oBAAoB,wBAG8C;AAExE,MAAM,gBAAgB,GAAG,CAAC,QAAmB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC5F,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,CAAC;SACf;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AATU,QAAA,gBAAgB,oBAS1B;AACI,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AAAhD,QAAA,IAAI,QAA4C"}
|
package/dist/logger.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;AAAA,+DAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,kBAAe,MAAM,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// eslint-disable-next-line import/no-
|
|
3
|
+
// eslint-disable-next-line import/no-unresolved
|
|
4
4
|
require("jest");
|
|
5
5
|
class RabbitMq {
|
|
6
6
|
constructor() {
|
|
@@ -16,3 +16,4 @@ class RabbitMq {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
exports.default = RabbitMq;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":";;AAAA,gDAAgD;AAChD,gBAAc;AAGd,MAAM,QAAQ;IAAd;QACE,QAAG,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAErB,SAAI,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAEtB,kBAAa,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,mBAAc,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAEhC,gBAAW,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7B,YAAO,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAEzB,wBAAmB,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,YAAO,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAEzB,gBAAW,GAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/B,CAAC;CAAA;AAED,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IAfRabbitMq } from '../index';
|
|
2
|
+
declare class RabbitMq implements IAfRabbitMq {
|
|
3
|
+
ack: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
4
|
+
nack: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
5
|
+
assertChannel: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
6
|
+
assertExchange: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
7
|
+
assertQueue: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
8
|
+
consume: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
9
|
+
consumeFromExchange: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
10
|
+
publish: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
11
|
+
sendToQueue: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
12
|
+
}
|
|
13
|
+
export default RabbitMq;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
class RabbitMq {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.ack = vitest_1.vi.fn();
|
|
7
|
+
this.nack = vitest_1.vi.fn();
|
|
8
|
+
this.assertChannel = vitest_1.vi.fn();
|
|
9
|
+
this.assertExchange = vitest_1.vi.fn();
|
|
10
|
+
this.assertQueue = vitest_1.vi.fn();
|
|
11
|
+
this.consume = vitest_1.vi.fn();
|
|
12
|
+
this.consumeFromExchange = vitest_1.vi.fn();
|
|
13
|
+
this.publish = vitest_1.vi.fn();
|
|
14
|
+
this.sendToQueue = vitest_1.vi.fn();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.default = RabbitMq;
|
|
18
|
+
//# sourceMappingURL=vitest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/mock/vitest.ts"],"names":[],"mappings":";;AAAA,mCAA4B;AAG5B,MAAM,QAAQ;IAAd;QACE,QAAG,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAEd,SAAI,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAEf,kBAAa,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAExB,mBAAc,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAEzB,gBAAW,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAEtB,YAAO,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAElB,wBAAmB,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAE9B,YAAO,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAElB,gBAAW,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;IACxB,CAAC;CAAA;AAED,kBAAe,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autofleet/rabbit",
|
|
3
|
-
"version": "3.4.0
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"engines": {
|
|
@@ -10,40 +10,47 @@
|
|
|
10
10
|
"postinstall": "echo '\\033[0;31m\nWARNING: in case of migrating to new version of @autofleet/rabbit \nyou might have to delete existing queues or the deployment will fail.\\033[0m\n'",
|
|
11
11
|
"start": "ts-node src/index.ts",
|
|
12
12
|
"example": "ts-node src/example.ts",
|
|
13
|
-
"build": "rm -rf dist && tsc",
|
|
14
|
-
"linter": "
|
|
15
|
-
"test": "
|
|
16
|
-
"test-local": "RABBITMQ_SERVICE_HOST=localhost:5672
|
|
17
|
-
"coverage": "
|
|
13
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
14
|
+
"linter": "eslint .",
|
|
15
|
+
"test": "vitest",
|
|
16
|
+
"test-local": "RABBITMQ_SERVICE_HOST=localhost:5672 node --inspect-brk ./node_modules/.bin/vitest --testTimeout=10000000000",
|
|
17
|
+
"coverage": "vitest --coverage",
|
|
18
18
|
"dev": "nodemon"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@autofleet/zehut": "^3.1.2",
|
|
22
|
-
"amqp-connection-manager": "4.1.
|
|
23
|
-
"amqplib": "0.10.
|
|
22
|
+
"amqp-connection-manager": "4.1.14",
|
|
23
|
+
"amqplib": "0.10.5",
|
|
24
24
|
"bluebird": "^3.7.2",
|
|
25
|
-
"moment": "^2.
|
|
25
|
+
"moment": "^2.30.1",
|
|
26
26
|
"redis": "^3.1.2",
|
|
27
27
|
"redis-lock": "^0.1.4"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@autofleet/logger": "*"
|
|
30
|
+
"@autofleet/logger": "*",
|
|
31
|
+
"jest": "*"
|
|
32
|
+
},
|
|
33
|
+
"peerDependenciesMeta": {
|
|
34
|
+
"jest": {
|
|
35
|
+
"optional": true
|
|
36
|
+
}
|
|
31
37
|
},
|
|
32
38
|
"devDependencies": {
|
|
33
39
|
"@autofleet/logger": "4.0.6",
|
|
34
|
-
"@types/amqplib": "0.
|
|
40
|
+
"@types/amqplib": "0.10.7",
|
|
41
|
+
"@types/bluebird": "^3.5.42",
|
|
35
42
|
"@types/jest": "^29.5.12",
|
|
36
43
|
"@types/node": "^20.14.11",
|
|
37
44
|
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
|
45
|
+
"@vitest/coverage-v8": "^3.1.3",
|
|
38
46
|
"eslint": "^7.13.0",
|
|
39
47
|
"eslint-config-airbnb-typescript": "^12.0.0",
|
|
40
48
|
"eslint-plugin-import": "^2.22.1",
|
|
41
|
-
"jest": "^29.7.0",
|
|
42
49
|
"node-tcp-proxy": "^0.0.28",
|
|
43
|
-
"ts-jest": "^29.2.3",
|
|
44
50
|
"ts-node": "^8.6.2",
|
|
45
|
-
"typescript": "^4.9.5"
|
|
51
|
+
"typescript": "^4.9.5",
|
|
52
|
+
"vitest": "^3.1.3"
|
|
46
53
|
},
|
|
47
54
|
"author": "",
|
|
48
|
-
"license": "
|
|
55
|
+
"license": "Proprietary"
|
|
49
56
|
}
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,11 @@ const debug = logger.debug.bind(logger);
|
|
|
45
45
|
|
|
46
46
|
const PUBLISH_TIMEOUT = 1000 * 10;
|
|
47
47
|
|
|
48
|
+
// TODO: [QUORUM-PHASE-3] Delete this env var
|
|
49
|
+
const {
|
|
50
|
+
DISABLE_QUORUM_QUEUES,
|
|
51
|
+
} = process.env;
|
|
52
|
+
|
|
48
53
|
export interface IAfRabbitMq {
|
|
49
54
|
ack: any;
|
|
50
55
|
nack: any;
|
|
@@ -149,8 +154,6 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
149
154
|
|
|
150
155
|
blockReconnect: boolean | null | undefined
|
|
151
156
|
|
|
152
|
-
connection: AmqpConnectionManager | null | undefined
|
|
153
|
-
|
|
154
157
|
publishConnection: ConnectionData
|
|
155
158
|
|
|
156
159
|
consumeConnection: ConnectionData
|
|
@@ -213,16 +216,15 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
213
216
|
this.em = new EventEmitter();
|
|
214
217
|
this.publishChannel = null;
|
|
215
218
|
this.publishChannelSetupPromise = null;
|
|
216
|
-
this.connection = null;
|
|
217
219
|
this.publishConnection = {
|
|
218
|
-
|
|
220
|
+
amqpConnection: null,
|
|
219
221
|
creatingConnection: false,
|
|
220
222
|
connectionCreatedEventName: 'publishConnectionCreated',
|
|
221
223
|
connectionFailedEventName: 'publishConnectionFailed',
|
|
222
224
|
blockReconnect: false,
|
|
223
225
|
};
|
|
224
226
|
this.consumeConnection = {
|
|
225
|
-
|
|
227
|
+
amqpConnection: null,
|
|
226
228
|
creatingConnection: false,
|
|
227
229
|
connectionCreatedEventName: 'consumeConnectionCreated',
|
|
228
230
|
connectionFailedEventName: 'consumeConnectionFailed',
|
|
@@ -256,17 +258,17 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
256
258
|
this.oldPublishChannel = null;
|
|
257
259
|
this.oldPublishChannelSetupPromise = null;
|
|
258
260
|
this.oldPublishConnection = {
|
|
259
|
-
|
|
261
|
+
amqpConnection: null,
|
|
260
262
|
creatingConnection: false,
|
|
261
|
-
connectionCreatedEventName: '
|
|
262
|
-
connectionFailedEventName: '
|
|
263
|
+
connectionCreatedEventName: 'oldPublishConnectionCreated',
|
|
264
|
+
connectionFailedEventName: 'oldPublishConnectionFailed',
|
|
263
265
|
blockReconnect: false,
|
|
264
266
|
};
|
|
265
267
|
this.oldConsumeConnection = {
|
|
266
|
-
|
|
268
|
+
amqpConnection: null,
|
|
267
269
|
creatingConnection: false,
|
|
268
|
-
connectionCreatedEventName: '
|
|
269
|
-
connectionFailedEventName: '
|
|
270
|
+
connectionCreatedEventName: 'oldConsumeConnectionCreated',
|
|
271
|
+
connectionFailedEventName: 'oldConsumeConnectionFailed',
|
|
270
272
|
blockReconnect: false,
|
|
271
273
|
};
|
|
272
274
|
this.oldCreatingConnection = false;
|
|
@@ -378,13 +380,13 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
378
380
|
if (
|
|
379
381
|
!skipRetry
|
|
380
382
|
&& (
|
|
381
|
-
!msg.properties.headers[RETRY_HEADER]
|
|
383
|
+
!msg.properties.headers?.[RETRY_HEADER]
|
|
382
384
|
|| parseInt(msg.properties.headers[RETRY_HEADER], 10) < options.retries
|
|
383
385
|
)
|
|
384
386
|
) {
|
|
385
387
|
await this.sendToQueue(queue, RabbitMq.parseMsg(msg).content, options, {
|
|
386
388
|
...msg.properties.headers,
|
|
387
|
-
[RETRY_HEADER]: msg.properties.headers[RETRY_HEADER]
|
|
389
|
+
[RETRY_HEADER]: msg.properties.headers?.[RETRY_HEADER]
|
|
388
390
|
? msg.properties.headers[RETRY_HEADER] + 1
|
|
389
391
|
: 1,
|
|
390
392
|
});
|
|
@@ -392,7 +394,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
392
394
|
const deadQueue = `${queue}-dead`;
|
|
393
395
|
await this.sendToQueue(deadQueue, RabbitMq.parseMsg(msg).content, deadQueueOptions, {
|
|
394
396
|
...msg.properties.headers,
|
|
395
|
-
[RETRY_HEADER]: msg.properties.headers[RETRY_HEADER]
|
|
397
|
+
[RETRY_HEADER]: msg.properties.headers?.[RETRY_HEADER]
|
|
396
398
|
? msg.properties.headers[RETRY_HEADER] + 1
|
|
397
399
|
: 1,
|
|
398
400
|
});
|
|
@@ -409,12 +411,13 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
409
411
|
async getConnection(connection: ConnectionData) {
|
|
410
412
|
return new Promise<AmqpConnectionManager>(async (resolve, reject) => {
|
|
411
413
|
const {
|
|
412
|
-
|
|
414
|
+
amqpConnection: connectionLocal,
|
|
413
415
|
creatingConnection,
|
|
414
416
|
connectionCreatedEventName,
|
|
415
417
|
connectionFailedEventName,
|
|
416
418
|
blockReconnect,
|
|
417
419
|
} = connection;
|
|
420
|
+
|
|
418
421
|
if (blockReconnect) {
|
|
419
422
|
debug('rabbit: block reconnect');
|
|
420
423
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -456,12 +459,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
456
459
|
findServers,
|
|
457
460
|
});
|
|
458
461
|
|
|
459
|
-
connection.
|
|
460
|
-
if (connection === this.publishConnection) {
|
|
461
|
-
debug('rabbit: publishConnection set');
|
|
462
|
-
} else if (connection === this.consumeConnection) {
|
|
463
|
-
debug('rabbit: consumeConnection set');
|
|
464
|
-
}
|
|
462
|
+
connection.amqpConnection = newConnection;
|
|
465
463
|
newConnection.on('error', (err) => {
|
|
466
464
|
logger.error('rabbit: connection error', { err });
|
|
467
465
|
if (!isResolved) {
|
|
@@ -473,6 +471,9 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
473
471
|
|
|
474
472
|
newConnection.on('connectFailed', (err) => {
|
|
475
473
|
this.consumersTags = [];
|
|
474
|
+
if (typeof err.url === 'string') {
|
|
475
|
+
err.url = this.maskURL(err.url);
|
|
476
|
+
}
|
|
476
477
|
logger.error('rabbit: connection connectFailed', { err, advice: 'Check if the vhost exist', vhost: this.vhost });
|
|
477
478
|
if (!isResolved) {
|
|
478
479
|
isResolved = true;
|
|
@@ -496,7 +497,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
496
497
|
newConnection.once('connect', async () => {
|
|
497
498
|
debug('rabbit: connection established');
|
|
498
499
|
connection.creatingConnection = false;
|
|
499
|
-
this.em.emit(connectionCreatedEventName,
|
|
500
|
+
this.em.emit(connectionCreatedEventName, newConnection);
|
|
500
501
|
isResolved = true;
|
|
501
502
|
resolve(newConnection);
|
|
502
503
|
});
|
|
@@ -576,7 +577,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
576
577
|
if (!channel) {
|
|
577
578
|
throw new RabbitError('channel is not defined');
|
|
578
579
|
}
|
|
579
|
-
debug('rabbit: getting queue length', { queue, connected: this.
|
|
580
|
+
debug('rabbit: getting queue length', { queue, connected: this.oldPublishConnection.amqpConnection?.isConnected() });
|
|
580
581
|
return channel?.checkQueue(queue);
|
|
581
582
|
}
|
|
582
583
|
|
|
@@ -682,7 +683,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
682
683
|
// Used by the microservices to consume messages from the queue
|
|
683
684
|
async consume(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<any> {
|
|
684
685
|
// TODO: [QUORUM-PHASE-3] Use only the implementation of consumeNew and delete consumeNew and consumeOld
|
|
685
|
-
if (options?.isQuorumQueue !== false) {
|
|
686
|
+
if (options?.isQuorumQueue !== false && DISABLE_QUORUM_QUEUES !== 'true') {
|
|
686
687
|
await this.assertVHost();
|
|
687
688
|
await this.consumeNew(queue, callback, options);
|
|
688
689
|
}
|
|
@@ -745,9 +746,9 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
745
746
|
return null;
|
|
746
747
|
}
|
|
747
748
|
|
|
748
|
-
const traceId = msg.properties.headers[TRACING_HEADER];
|
|
749
|
-
const userId = msg.properties.headers[USER_TRACING_HEADER];
|
|
750
|
-
const automationId = msg.properties.headers[AUTOMATION_ID_HEADER];
|
|
749
|
+
const traceId = msg.properties.headers![TRACING_HEADER];
|
|
750
|
+
const userId = msg.properties.headers![USER_TRACING_HEADER];
|
|
751
|
+
const automationId = msg.properties.headers![AUTOMATION_ID_HEADER];
|
|
751
752
|
const parsedMessage = RabbitMq.parseMsg(msg);
|
|
752
753
|
const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
|
|
753
754
|
const trace = newTrace(traceTypes.RABBIT);
|
|
@@ -831,7 +832,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
831
832
|
RabbitMq.validateName('queue', queue);
|
|
832
833
|
const { limit, deadMessageTtl } = optionsWithDefaults;
|
|
833
834
|
// TODO: [QUORUM-PHASE-3] Delete the if statement after all the queues are created as quorum queues
|
|
834
|
-
if (options?.isQuorumQueue !== false) {
|
|
835
|
+
if (options?.isQuorumQueue !== false && DISABLE_QUORUM_QUEUES !== 'true') {
|
|
835
836
|
await this.assertVHost();
|
|
836
837
|
await this.saveConsumer(queue, callback, options);
|
|
837
838
|
const channel: ChannelWrapper = await this.getNewChannel({
|
|
@@ -853,28 +854,27 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
853
854
|
),
|
|
854
855
|
]);
|
|
855
856
|
});
|
|
856
|
-
} else {
|
|
857
|
-
// TODO: [QUORUM-PHASE-3] Delete the old implementation
|
|
858
|
-
await this.saveConsumerOld(queue, callback, options);
|
|
859
|
-
const channelOld: ChannelWrapper = await this.getNewChannelOld({
|
|
860
|
-
name: `consume-exchange-${exchange}-queue-${queue}-old`,
|
|
861
|
-
connection: this.oldConsumeConnection,
|
|
862
|
-
});
|
|
863
|
-
await channelOld.addSetup(async (c: ConfirmChannel) => {
|
|
864
|
-
const assertExchange = await assertExchangeFanout(c, exchange);
|
|
865
|
-
await c.assertQueue(queue);
|
|
866
|
-
this.oldExchanges[exchange] = assertExchange;
|
|
867
|
-
await c.prefetch(limit, false);
|
|
868
|
-
return Promise.all([
|
|
869
|
-
c.bindQueue(queue, exchange, ''),
|
|
870
|
-
this.consumeOld(
|
|
871
|
-
queue,
|
|
872
|
-
callback,
|
|
873
|
-
options,
|
|
874
|
-
),
|
|
875
|
-
]);
|
|
876
|
-
});
|
|
877
857
|
}
|
|
858
|
+
// TODO: [QUORUM-PHASE-3] Delete the old implementation
|
|
859
|
+
await this.saveConsumerOld(queue, callback, options);
|
|
860
|
+
const channelOld: ChannelWrapper = await this.getNewChannelOld({
|
|
861
|
+
name: `consume-exchange-${exchange}-queue-${queue}-old`,
|
|
862
|
+
connection: this.oldConsumeConnection,
|
|
863
|
+
});
|
|
864
|
+
await channelOld.addSetup(async (c: ConfirmChannel) => {
|
|
865
|
+
const assertExchange = await assertExchangeFanout(c, exchange);
|
|
866
|
+
await c.assertQueue(queue);
|
|
867
|
+
this.oldExchanges[exchange] = assertExchange;
|
|
868
|
+
await c.prefetch(limit, false);
|
|
869
|
+
return Promise.all([
|
|
870
|
+
c.bindQueue(queue, exchange, ''),
|
|
871
|
+
this.consumeOld(
|
|
872
|
+
queue,
|
|
873
|
+
callback,
|
|
874
|
+
options,
|
|
875
|
+
),
|
|
876
|
+
]);
|
|
877
|
+
});
|
|
878
878
|
}
|
|
879
879
|
|
|
880
880
|
// Used by the microservices to publish messages to the exchange
|
|
@@ -927,13 +927,13 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
927
927
|
}
|
|
928
928
|
|
|
929
929
|
// TODO: [QUORUM-PHASE-2] After changing the publish from old to new change from the old to the new implementation
|
|
930
|
-
async isConnected()
|
|
930
|
+
async isConnected(): Promise<boolean> {
|
|
931
931
|
debug('rabbit: start old is connected');
|
|
932
932
|
const oldConsumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
|
|
933
933
|
const oldPublishConnection = await this.getConnectionOld(this.oldPublishConnection);
|
|
934
934
|
const oldIsConnected = oldConsumeConnection.isConnected() && oldPublishConnection.isConnected();
|
|
935
935
|
if (!oldIsConnected) {
|
|
936
|
-
logger.error('rabbit: isConnected - false');
|
|
936
|
+
logger.error('rabbit: old isConnected - false');
|
|
937
937
|
return false;
|
|
938
938
|
}
|
|
939
939
|
const oldChannel: any = await this.assertChannelOld({ connection: this.oldPublishConnection });
|
|
@@ -943,30 +943,10 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
943
943
|
...this.oldConsumers.map((c: AfConsumer) => oldChannel.checkQueue(c.queue)),
|
|
944
944
|
]);
|
|
945
945
|
} catch (e) {
|
|
946
|
-
logger.error('rabbit: isConnected - false');
|
|
946
|
+
logger.error('rabbit: old isConnected - false');
|
|
947
947
|
return false;
|
|
948
948
|
}
|
|
949
949
|
logger.debug('rabbit: old isConnected - true');
|
|
950
|
-
|
|
951
|
-
debug('rabbit: start is connected');
|
|
952
|
-
const consumeConnection = await this.getConnectionOld(this.oldConsumeConnection);
|
|
953
|
-
const publishConnection = await this.getConnectionOld(this.oldPublishConnection);
|
|
954
|
-
const isConnected = consumeConnection.isConnected() && publishConnection.isConnected();
|
|
955
|
-
if (!isConnected) {
|
|
956
|
-
logger.error('rabbit: isConnected - false');
|
|
957
|
-
return false;
|
|
958
|
-
}
|
|
959
|
-
const channel: any = await this.assertChannelOld({ connection: this.oldPublishConnection });
|
|
960
|
-
try {
|
|
961
|
-
await Promise.all([
|
|
962
|
-
channel.waitForConnect(),
|
|
963
|
-
...this.oldConsumers.map((c: AfConsumer) => channel.checkQueue(c.queue)),
|
|
964
|
-
]);
|
|
965
|
-
} catch (e) {
|
|
966
|
-
logger.error('rabbit: isConnected - false');
|
|
967
|
-
return false;
|
|
968
|
-
}
|
|
969
|
-
logger.debug('rabbit: isConnected - true');
|
|
970
950
|
return true;
|
|
971
951
|
}
|
|
972
952
|
|
|
@@ -990,7 +970,6 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
990
970
|
|
|
991
971
|
private async consumeFromRabbitOld(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<any> {
|
|
992
972
|
const optionsWithDefaults = { ...DEFAULT_OPTIONS, ...options };
|
|
993
|
-
debug('rabbit: consumeFromRabbitOld', { queue });
|
|
994
973
|
RabbitMq.validateName('queue', queue);
|
|
995
974
|
this.saveConsumerOld(queue, callback, options);
|
|
996
975
|
const uniqueId = randomUUID();
|
|
@@ -1014,9 +993,9 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1014
993
|
return null;
|
|
1015
994
|
}
|
|
1016
995
|
|
|
1017
|
-
const traceId = msg.properties.headers[TRACING_HEADER];
|
|
1018
|
-
const userId = msg.properties.headers[USER_TRACING_HEADER];
|
|
1019
|
-
const automationId = msg.properties.headers[AUTOMATION_ID_HEADER];
|
|
996
|
+
const traceId = msg.properties.headers![TRACING_HEADER];
|
|
997
|
+
const userId = msg.properties.headers![USER_TRACING_HEADER];
|
|
998
|
+
const automationId = msg.properties.headers![AUTOMATION_ID_HEADER];
|
|
1020
999
|
const parsedMessage = RabbitMq.parseMsg(msg);
|
|
1021
1000
|
const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
|
|
1022
1001
|
const trace = newTrace(traceTypes.RABBIT);
|
|
@@ -1098,11 +1077,6 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1098
1077
|
name = rand().toString(), onClose = null, options = {}, connection,
|
|
1099
1078
|
}: newChannelOpts) {
|
|
1100
1079
|
let localConnection!: AmqpConnectionManager;
|
|
1101
|
-
if (connection === this.oldPublishConnection) {
|
|
1102
|
-
debug('rabbit: getConnectionOld publish', { connection });
|
|
1103
|
-
} else if (connection === this.oldConsumeConnection) {
|
|
1104
|
-
debug('rabbit: getConnectionOld consume', { connection });
|
|
1105
|
-
}
|
|
1106
1080
|
try {
|
|
1107
1081
|
localConnection = await this.getConnectionOld(connection);
|
|
1108
1082
|
} catch (e) {
|
|
@@ -1114,7 +1088,6 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1114
1088
|
throw new Error(`rabbit: couldnt get connection for new channel ${name}`);
|
|
1115
1089
|
}
|
|
1116
1090
|
|
|
1117
|
-
debug('rabbit: getNewChannelOld', { localConnection });
|
|
1118
1091
|
const channel = localConnection?.createChannel({ ...options });
|
|
1119
1092
|
once(channel, 'close').then((args) => {
|
|
1120
1093
|
logger.error(`rabbit: channel ${name} closed`);
|
|
@@ -1133,18 +1106,13 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1133
1106
|
async getConnectionOld(connection: ConnectionData) {
|
|
1134
1107
|
return new Promise<AmqpConnectionManager>(async (resolve, reject) => {
|
|
1135
1108
|
const {
|
|
1136
|
-
|
|
1109
|
+
amqpConnection: connectionLocal,
|
|
1137
1110
|
creatingConnection,
|
|
1138
1111
|
connectionCreatedEventName,
|
|
1139
1112
|
connectionFailedEventName,
|
|
1140
1113
|
blockReconnect,
|
|
1141
1114
|
} = connection;
|
|
1142
1115
|
|
|
1143
|
-
if (connection === this.oldPublishConnection) {
|
|
1144
|
-
debug('rabbit: getConnectionOld publish', { connectionLocal, creatingConnection, blockReconnect });
|
|
1145
|
-
} else if (connection === this.oldConsumeConnection) {
|
|
1146
|
-
debug('rabbit: getConnectionOld consume', { connectionLocal, creatingConnection, blockReconnect });
|
|
1147
|
-
}
|
|
1148
1116
|
if (blockReconnect) {
|
|
1149
1117
|
debug('rabbit: block reconnect');
|
|
1150
1118
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -1187,12 +1155,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1187
1155
|
findServers,
|
|
1188
1156
|
});
|
|
1189
1157
|
|
|
1190
|
-
connection.
|
|
1191
|
-
if (connection === this.oldPublishConnection) {
|
|
1192
|
-
debug('rabbit: oldPublishConnection set');
|
|
1193
|
-
} else if (connection === this.oldConsumeConnection) {
|
|
1194
|
-
debug('rabbit: oldConsumeConnection set');
|
|
1195
|
-
}
|
|
1158
|
+
connection.amqpConnection = newConnection;
|
|
1196
1159
|
newConnection.on('error', (err) => {
|
|
1197
1160
|
logger.error('rabbit: connection error', { err });
|
|
1198
1161
|
if (!isResolved) {
|
|
@@ -1204,6 +1167,9 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1204
1167
|
|
|
1205
1168
|
newConnection.on('connectFailed', (err) => {
|
|
1206
1169
|
this.oldConsumersTags = [];
|
|
1170
|
+
if (typeof err.url === 'string') {
|
|
1171
|
+
err.url = this.maskURL(err.url);
|
|
1172
|
+
}
|
|
1207
1173
|
logger.error('rabbit: connection connectFailed', { err });
|
|
1208
1174
|
if (!isResolved) {
|
|
1209
1175
|
isResolved = true;
|
|
@@ -1226,7 +1192,7 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1226
1192
|
newConnection.once('connect', async () => {
|
|
1227
1193
|
debug('rabbit: connection established');
|
|
1228
1194
|
connection.creatingConnection = false;
|
|
1229
|
-
this.oldEm.emit(connectionCreatedEventName,
|
|
1195
|
+
this.oldEm.emit(connectionCreatedEventName, newConnection);
|
|
1230
1196
|
isResolved = true;
|
|
1231
1197
|
resolve(newConnection);
|
|
1232
1198
|
});
|
|
@@ -1300,11 +1266,6 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1300
1266
|
}
|
|
1301
1267
|
|
|
1302
1268
|
async assertChannelOld({ force = false, connection }: assertChannelOpts): Promise<ChannelWrapper> {
|
|
1303
|
-
if (connection === this.oldPublishConnection) {
|
|
1304
|
-
debug('rabbit: assertChannelOld publish', { force, promiseSetup: this.oldPublishChannelSetupPromise });
|
|
1305
|
-
} else if (connection === this.oldConsumeConnection) {
|
|
1306
|
-
debug('rabbit: assertChannelOld consume', { force, promiseSetup: this.oldPublishChannelSetupPromise });
|
|
1307
|
-
}
|
|
1308
1269
|
if (!this.oldPublishChannelSetupPromise) {
|
|
1309
1270
|
this.oldPublishChannelSetupPromise = new Promise<ChannelWrapper>(async (resolve, reject) => {
|
|
1310
1271
|
if (this.oldPublishChannel && !force) {
|
|
@@ -1313,16 +1274,10 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1313
1274
|
|
|
1314
1275
|
try {
|
|
1315
1276
|
const channel = await this.getNewChannelOld({ connection });
|
|
1316
|
-
if (connection === this.oldPublishConnection) {
|
|
1317
|
-
debug('rabbit: old new channel got publish', { force, channel });
|
|
1318
|
-
} else if (connection === this.oldConsumeConnection) {
|
|
1319
|
-
debug('rabbit: old new channel got consume', { force, channel });
|
|
1320
|
-
}
|
|
1321
1277
|
channel.on('error', (err) => {
|
|
1322
1278
|
logger.error('rabbit: channel error', { err });
|
|
1323
1279
|
});
|
|
1324
1280
|
if (this.oldPublishConnection === connection) {
|
|
1325
|
-
debug('rabbit: a new channel assigned to the oldPublishChannel', { connection });
|
|
1326
1281
|
this.oldPublishChannel = channel;
|
|
1327
1282
|
}
|
|
1328
1283
|
resolve(channel);
|
|
@@ -1359,6 +1314,17 @@ class RabbitMq implements IAfRabbitMq {
|
|
|
1359
1314
|
this.oldExchanges[exchangeName] = await this.oldAssertExchangePromises[exchangeName];
|
|
1360
1315
|
return this.oldExchanges[exchangeName];
|
|
1361
1316
|
}
|
|
1317
|
+
|
|
1318
|
+
private maskURL = (url: string): string => {
|
|
1319
|
+
try {
|
|
1320
|
+
const urlObj = new URL(url);
|
|
1321
|
+
urlObj.username = '***';
|
|
1322
|
+
urlObj.password = '***';
|
|
1323
|
+
return urlObj.toString();
|
|
1324
|
+
} catch {
|
|
1325
|
+
return url;
|
|
1326
|
+
}
|
|
1327
|
+
}
|
|
1362
1328
|
}
|
|
1363
1329
|
|
|
1364
1330
|
export default RabbitMq;
|
package/src/lib/types.ts
CHANGED
|
@@ -64,7 +64,7 @@ export const CONSUMER_DEFAULT_OPTIONS: Options.Consume = {
|
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
export type ConnectionData = {
|
|
67
|
-
|
|
67
|
+
amqpConnection: AmqpConnectionManager | null;
|
|
68
68
|
creatingConnection: boolean;
|
|
69
69
|
connectionCreatedEventName: string;
|
|
70
70
|
connectionFailedEventName: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-
|
|
1
|
+
// eslint-disable-next-line import/no-unresolved
|
|
2
2
|
import 'jest';
|
|
3
|
-
import { IAfRabbitMq } from '
|
|
3
|
+
import type { IAfRabbitMq } from '../index';
|
|
4
4
|
|
|
5
5
|
class RabbitMq implements IAfRabbitMq {
|
|
6
6
|
ack: any = jest.fn();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
import { IAfRabbitMq } from '../index';
|
|
3
|
+
|
|
4
|
+
class RabbitMq implements IAfRabbitMq {
|
|
5
|
+
ack = vi.fn();
|
|
6
|
+
|
|
7
|
+
nack = vi.fn();
|
|
8
|
+
|
|
9
|
+
assertChannel = vi.fn();
|
|
10
|
+
|
|
11
|
+
assertExchange = vi.fn();
|
|
12
|
+
|
|
13
|
+
assertQueue = vi.fn();
|
|
14
|
+
|
|
15
|
+
consume = vi.fn();
|
|
16
|
+
|
|
17
|
+
consumeFromExchange = vi.fn();
|
|
18
|
+
|
|
19
|
+
publish = vi.fn();
|
|
20
|
+
|
|
21
|
+
sendToQueue = vi.fn();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default RabbitMq;
|
package/tsconfig.json
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"experimentalDecorators": true,
|
|
10
10
|
"emitDecoratorMetadata": true,
|
|
11
11
|
"skipLibCheck": true,
|
|
12
|
-
"
|
|
12
|
+
"sourceMap": true,
|
|
13
13
|
},
|
|
14
14
|
"exclude": ["node_modules"],
|
|
15
|
-
"include": ["src
|
|
15
|
+
"include": ["src/", "vitest.config.ts"],
|
|
16
16
|
}
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// eslint-disable-next-line import/no-unresolved
|
|
2
|
+
import { defineConfig } from 'vitest/config';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
test: {
|
|
6
|
+
coverage: {
|
|
7
|
+
provider: 'v8',
|
|
8
|
+
include: ['src/**/*.ts'],
|
|
9
|
+
exclude: ['src/example.ts', 'src/mock/*.ts'],
|
|
10
|
+
reporter: 'text',
|
|
11
|
+
thresholds: {
|
|
12
|
+
lines: 75,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|