@zdavison/matador 4.0.1 → 4.0.3
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/core/fanout.d.ts +62 -0
- package/dist/core/fanout.d.ts.map +1 -1
- package/dist/core/fanout.js +217 -15
- package/dist/core/fanout.test.js +904 -6
- package/dist/core/matador.d.ts +33 -0
- package/dist/core/matador.d.ts.map +1 -1
- package/dist/core/matador.js +6 -1
- package/dist/core/matador.test.js +243 -7
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -2
- package/dist/errors/matador-errors.d.ts +10 -8
- package/dist/errors/matador-errors.d.ts.map +1 -1
- package/dist/errors/matador-errors.js +18 -14
- package/dist/index.cjs +345 -73
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/transport/local/local-transport.d.ts +6 -0
- package/dist/transport/local/local-transport.d.ts.map +1 -1
- package/dist/transport/local/local-transport.js +35 -18
- package/dist/transport/local/local-transport.test.js +40 -4
- package/dist/transport/multi/multi-transport.d.ts +6 -0
- package/dist/transport/multi/multi-transport.d.ts.map +1 -1
- package/dist/transport/multi/multi-transport.js +20 -0
- package/dist/transport/multi/multi-transport.test.js +82 -0
- package/dist/transport/rabbitmq/rabbitmq-transport-reconnection.test.js +45 -6
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts +6 -0
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts.map +1 -1
- package/dist/transport/rabbitmq/rabbitmq-transport.js +83 -40
- package/dist/transport/transport.d.ts +12 -0
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/types/event.d.ts +17 -0
- package/dist/types/event.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -64,6 +64,18 @@ export class RabbitMQTransport {
|
|
|
64
64
|
isConnected() {
|
|
65
65
|
return this.connectionManager.isConnected();
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Registers a callback to fire each time the transport (here RabbitMQ) successfully (re)connects
|
|
69
|
+
* @param callback - The callback to fire when the transport (here RabbitMQ) successfully (re)connects
|
|
70
|
+
* @returns A function to unsubscribe from the callback
|
|
71
|
+
*/
|
|
72
|
+
onConnected(callback) {
|
|
73
|
+
return this.connectionManager.onStateChange((state) => {
|
|
74
|
+
if (state.status === 'connected') {
|
|
75
|
+
callback();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
67
79
|
async applyTopology(topology) {
|
|
68
80
|
this.topology = topology;
|
|
69
81
|
if (!this.publishChannel) {
|
|
@@ -149,39 +161,43 @@ export class RabbitMQTransport {
|
|
|
149
161
|
};
|
|
150
162
|
this.subscriptionIntents.push(intent);
|
|
151
163
|
await this.activateIntent(intent);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
const unsubscribe = async () => {
|
|
165
|
+
intent.active = false;
|
|
166
|
+
const idx = this.subscriptionIntents.indexOf(intent);
|
|
167
|
+
if (idx !== -1)
|
|
168
|
+
this.subscriptionIntents.splice(idx, 1);
|
|
169
|
+
const consumer = intent.currentConsumer;
|
|
170
|
+
if (consumer) {
|
|
171
|
+
consumer.active = false;
|
|
172
|
+
const queueChannel = this.queueChannels.get(queue);
|
|
173
|
+
if (queueChannel) {
|
|
174
|
+
try {
|
|
175
|
+
await queueChannel.channel.cancel(consumer.consumerTag);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Channel may already be closed
|
|
179
|
+
}
|
|
180
|
+
const cIdx = queueChannel.consumers.indexOf(consumer);
|
|
181
|
+
if (cIdx !== -1)
|
|
182
|
+
queueChannel.consumers.splice(cIdx, 1);
|
|
183
|
+
if (queueChannel.consumers.length === 0) {
|
|
163
184
|
try {
|
|
164
|
-
await queueChannel.channel.
|
|
185
|
+
await queueChannel.channel.close();
|
|
165
186
|
}
|
|
166
187
|
catch {
|
|
167
|
-
//
|
|
168
|
-
}
|
|
169
|
-
const cIdx = queueChannel.consumers.indexOf(consumer);
|
|
170
|
-
if (cIdx !== -1)
|
|
171
|
-
queueChannel.consumers.splice(cIdx, 1);
|
|
172
|
-
if (queueChannel.consumers.length === 0) {
|
|
173
|
-
try {
|
|
174
|
-
await queueChannel.channel.close();
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
// Ignore
|
|
178
|
-
}
|
|
179
|
-
this.queueChannels.delete(queue);
|
|
188
|
+
// Ignore
|
|
180
189
|
}
|
|
190
|
+
this.queueChannels.delete(queue);
|
|
181
191
|
}
|
|
182
|
-
intent.currentConsumer = null;
|
|
183
192
|
}
|
|
184
|
-
|
|
193
|
+
intent.currentConsumer = null;
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
return {
|
|
197
|
+
unsubscribe,
|
|
198
|
+
// Messages on this transport comes from outside (RabbitMQ), so, when shutting down, we need to unsubscribe directly
|
|
199
|
+
// Otherwise, we could receive traffic forever, and an idle state would never be reached.
|
|
200
|
+
pauseForShutdown: unsubscribe,
|
|
185
201
|
get isActive() {
|
|
186
202
|
return intent.active;
|
|
187
203
|
},
|
|
@@ -327,7 +343,19 @@ export class RabbitMQTransport {
|
|
|
327
343
|
return queueChannel;
|
|
328
344
|
}
|
|
329
345
|
async doConnect() {
|
|
346
|
+
// Close any existing connection before opening a new one
|
|
347
|
+
if (this.connection) {
|
|
348
|
+
try {
|
|
349
|
+
await this.connection.close();
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// Can happen if the connection is already closed
|
|
353
|
+
}
|
|
354
|
+
this.connection = null;
|
|
355
|
+
this.publishChannel = null; // channels belong to the old connection
|
|
356
|
+
}
|
|
330
357
|
// Drop stale channel objects so getOrCreateQueueChannel opens fresh ones
|
|
358
|
+
// on the new connection during intent replay below.
|
|
331
359
|
this.queueChannels.clear();
|
|
332
360
|
this.logger.info(`[Matador] ⏳ Connecting to RabbitMQ at '${redactAmqpUrl(this.config.url)}'.`);
|
|
333
361
|
const connection = await amqplib.connect(this.config.url, {
|
|
@@ -347,25 +375,40 @@ export class RabbitMQTransport {
|
|
|
347
375
|
consumer.active = false;
|
|
348
376
|
}
|
|
349
377
|
}
|
|
378
|
+
this.connection = null;
|
|
379
|
+
this.publishChannel = null;
|
|
350
380
|
if (this.connectionManager.isConnected()) {
|
|
351
381
|
// Unexpected close, trigger reconnection
|
|
352
382
|
this.connectionManager.handleConnectionLost(new Error('Connection closed unexpectedly'));
|
|
353
383
|
}
|
|
354
384
|
});
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
385
|
+
try {
|
|
386
|
+
// A confirm channel so publishes can await broker acknowledgement
|
|
387
|
+
this.publishChannel = await connection.createConfirmChannel();
|
|
388
|
+
// Handle publish channel errors to prevent unhandled error events
|
|
389
|
+
this.publishChannel.on('error', (err) => {
|
|
390
|
+
this.logger.error('[Matador] 🔴 RabbitMQ publish channel error', err);
|
|
391
|
+
});
|
|
392
|
+
// Re-apply topology if we have one (reconnection scenario)
|
|
393
|
+
if (this.topology) {
|
|
394
|
+
await this.applyTopology(this.topology);
|
|
395
|
+
// Recreate consumers for every active subscription on the new connection.
|
|
396
|
+
for (const intent of this.subscriptionIntents) {
|
|
397
|
+
await this.activateIntent(intent);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
catch (err) {
|
|
402
|
+
// Setup failed after the connection was opened - close it so that it doesn't leak
|
|
403
|
+
try {
|
|
404
|
+
await connection.close();
|
|
368
405
|
}
|
|
406
|
+
catch {
|
|
407
|
+
// Ignore errors during cleanup
|
|
408
|
+
}
|
|
409
|
+
this.connection = null;
|
|
410
|
+
this.publishChannel = null;
|
|
411
|
+
throw err;
|
|
369
412
|
}
|
|
370
413
|
this.logger.info('[Matador] 🔌 Connected to RabbitMQ');
|
|
371
414
|
}
|
|
@@ -96,6 +96,12 @@ export type MessageHandler = (envelope: Envelope, receipt: MessageReceipt) => Pr
|
|
|
96
96
|
export interface Subscription {
|
|
97
97
|
/** Cancels the subscription */
|
|
98
98
|
unsubscribe(): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Stops delivering messages ahead of a graceful shutdown, without
|
|
101
|
+
* necessarily tearing down the subscription the way unsubscribe() does.
|
|
102
|
+
* Optional: only meaningful for externally-fed transports where traffic
|
|
103
|
+
*/
|
|
104
|
+
pauseForShutdown?(): Promise<void>;
|
|
99
105
|
/** Whether the subscription is currently active */
|
|
100
106
|
readonly isActive: boolean;
|
|
101
107
|
}
|
|
@@ -137,6 +143,12 @@ export interface Transport {
|
|
|
137
143
|
* The handler receives decoded envelopes and receipts.
|
|
138
144
|
*/
|
|
139
145
|
subscribe(queue: string, handler: MessageHandler, options?: SubscribeOptions): Promise<Subscription>;
|
|
146
|
+
/**
|
|
147
|
+
* Registers a callback to fire each time the transport successfully (re)connects.
|
|
148
|
+
* Returns a function that removes the listener when called.
|
|
149
|
+
* Optional: only meaningful for transports that can lose and regain a connection.
|
|
150
|
+
*/
|
|
151
|
+
onConnected?(callback: () => void): () => void;
|
|
140
152
|
/**
|
|
141
153
|
* Acknowledges/completes a message.
|
|
142
154
|
* Called after processing is done (success, retry scheduled, or dead-lettered).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/types/event.d.ts
CHANGED
|
@@ -52,6 +52,23 @@ export interface EventOptions {
|
|
|
52
52
|
* and both taking precedence over universal metadata.
|
|
53
53
|
*/
|
|
54
54
|
readonly metadata?: JsonRecord | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Whether to buffer this send for retry on reconnect if all transports fail.
|
|
57
|
+
* When true (default), failed sends are held in memory and retried automatically
|
|
58
|
+
* when the transport reconnects.
|
|
59
|
+
* When false, failures are reported immediately in result.errors with no retry.
|
|
60
|
+
*
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
readonly buffer?: boolean | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Whether to throw an error when a buffered failure is reported.
|
|
66
|
+
* Only meaningful when buffer is true. When true, the send is buffered
|
|
67
|
+
* for retry AND reported as an error so the caller is aware it failed.
|
|
68
|
+
*
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
readonly throwOnBufferedFailure?: boolean | undefined;
|
|
55
72
|
}
|
|
56
73
|
/**
|
|
57
74
|
* Abstract base class for creating Matador events.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC,yDAAyD;IACzD,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,OAAO;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC,yDAAyD;IACzD,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,OAAO;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAE3C;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE5C,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1B,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtE,CAAC,GACD,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,GAClD,CAAC,KACC,IAAI,EAAE,CAAC,KACJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|