amqp-connection-manager 3.5.2 → 3.8.1
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/README.md +9 -6
- package/dist/cjs/AmqpConnectionManager.js +37 -3
- package/dist/cjs/ChannelWrapper.js +184 -34
- package/dist/cjs/index.js +7 -2
- package/dist/esm/AmqpConnectionManager.d.ts +16 -2
- package/dist/esm/AmqpConnectionManager.js +35 -1
- package/dist/esm/AmqpConnectionManager.js.map +1 -1
- package/dist/esm/ChannelWrapper.d.ts +51 -6
- package/dist/esm/ChannelWrapper.js +184 -34
- package/dist/esm/ChannelWrapper.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -2,13 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://npmjs.org/package/amqp-connection-manager)
|
|
4
4
|

|
|
5
|
-
[](https://coveralls.io/github/jwalton/node-amqp-connection-manager?branch=master)
|
|
6
5
|
[](https://github.com/semantic-release/semantic-release)
|
|
7
6
|
|
|
8
|
-
[](https://david-dm.org/jwalton/node-amqp-connection-manager)
|
|
9
|
-
[](https://david-dm.org/jwalton/node-amqp-connection-manager#info=devDependencies)
|
|
10
|
-
[](https://david-dm.org/jwalton/node-amqp-connection-manager#info=peerDependencies)
|
|
11
|
-
|
|
12
7
|
Connection management for amqplib. This is a wrapper around [amqplib](http://www.squaremobius.net/amqp.node/) which provides automatic reconnects.
|
|
13
8
|
|
|
14
9
|
## Features
|
|
@@ -137,8 +132,10 @@ Options:
|
|
|
137
132
|
Note that `this` inside the setup function will the returned ChannelWrapper.
|
|
138
133
|
The ChannelWrapper has a special `context` member you can use to store
|
|
139
134
|
arbitrary data in.
|
|
140
|
-
- `options.json` if true, then ChannelWrapper assumes all messages passed to `publish()` and `sendToQueue()`
|
|
135
|
+
- `options.json` - if true, then ChannelWrapper assumes all messages passed to `publish()` and `sendToQueue()`
|
|
141
136
|
are plain JSON objects. These will be encoded automatically before being sent.
|
|
137
|
+
- `options.confirm` - if true (default), the created channel will be a ConfirmChannel
|
|
138
|
+
- `options.publishTimeout` - a default timeout for messages published to this channel.
|
|
142
139
|
|
|
143
140
|
### AmqpConnectionManager#isConnected()
|
|
144
141
|
|
|
@@ -183,6 +180,12 @@ callback) which resolves when the message is confirmed to have been delivered to
|
|
|
183
180
|
either the broker refuses the message, or if `close()` is called on the ChannelWrapper before the message can be
|
|
184
181
|
delivered.
|
|
185
182
|
|
|
183
|
+
Both of these functions take an additional option when passing options:
|
|
184
|
+
|
|
185
|
+
- `timeout` - If specified, if a messages is not acked by the amqp broker within the specified number of milliseconds,
|
|
186
|
+
the message will be rejected. Note that the message _may_ still end up getting delivered after the timeout, as we
|
|
187
|
+
have no way to cancel the in-flight request.
|
|
188
|
+
|
|
186
189
|
### ChannelWrapper#ack and ChannelWrapper#nack
|
|
187
190
|
|
|
188
191
|
These are just aliases for calling `ack()` and `nack()` on the underlying channel. They do nothing if the underlying
|
|
@@ -72,7 +72,41 @@ class AmqpConnectionManager extends events_1.EventEmitter {
|
|
|
72
72
|
// There will be one listener per channel, and there could be a lot of channels, so disable warnings from node.
|
|
73
73
|
this.setMaxListeners(0);
|
|
74
74
|
this._findServers = options.findServers || (() => Promise.resolve(urls));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Start the connect retries and await the first connect result. Even if the initial connect fails or timeouts, the
|
|
78
|
+
* reconnect attempts will continue in the background.
|
|
79
|
+
* @param [options={}] -
|
|
80
|
+
* @param [options.timeout] - Time to wait for initial connect
|
|
81
|
+
*/
|
|
82
|
+
async connect({ timeout } = {}) {
|
|
75
83
|
this._connect();
|
|
84
|
+
let reject;
|
|
85
|
+
const onDisconnect = ({ err }) => {
|
|
86
|
+
// Ignore disconnects caused by dead servers etc., but throw on operational errors like bad credentials.
|
|
87
|
+
if (err.isOperational) {
|
|
88
|
+
reject(err);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
try {
|
|
92
|
+
await Promise.race([
|
|
93
|
+
(0, events_1.once)(this, 'connect'),
|
|
94
|
+
new Promise((_resolve, innerReject) => {
|
|
95
|
+
reject = innerReject;
|
|
96
|
+
this.on('disconnect', onDisconnect);
|
|
97
|
+
}),
|
|
98
|
+
...(timeout
|
|
99
|
+
? [
|
|
100
|
+
(0, helpers_js_1.wait)(timeout).promise.then(() => {
|
|
101
|
+
throw new Error('amqp-connection-manager: connect timeout');
|
|
102
|
+
}),
|
|
103
|
+
]
|
|
104
|
+
: []),
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
this.removeListener('disconnect', onDisconnect);
|
|
109
|
+
}
|
|
76
110
|
}
|
|
77
111
|
// `options` here are any options that can be passed to ChannelWrapper.
|
|
78
112
|
createChannel(options = {}) {
|
|
@@ -221,7 +255,7 @@ class AmqpConnectionManager extends events_1.EventEmitter {
|
|
|
221
255
|
this._currentConnection = undefined;
|
|
222
256
|
this._disconnectSent = true;
|
|
223
257
|
this.emit('disconnect', { err });
|
|
224
|
-
const handle = helpers_js_1.wait(this.reconnectTimeInSeconds * 1000);
|
|
258
|
+
const handle = (0, helpers_js_1.wait)(this.reconnectTimeInSeconds * 1000);
|
|
225
259
|
this._cancelRetriesHandler = handle.cancel;
|
|
226
260
|
handle.promise
|
|
227
261
|
.then(() => this._connect())
|
|
@@ -245,10 +279,10 @@ class AmqpConnectionManager extends events_1.EventEmitter {
|
|
|
245
279
|
this._connectPromise = undefined;
|
|
246
280
|
let handle;
|
|
247
281
|
if (err.name === 'OperationalError' && err.message === 'connect ETIMEDOUT') {
|
|
248
|
-
handle = helpers_js_1.wait(0);
|
|
282
|
+
handle = (0, helpers_js_1.wait)(0);
|
|
249
283
|
}
|
|
250
284
|
else {
|
|
251
|
-
handle = helpers_js_1.wait(this.reconnectTimeInSeconds * 1000);
|
|
285
|
+
handle = (0, helpers_js_1.wait)(this.reconnectTimeInSeconds * 1000);
|
|
252
286
|
}
|
|
253
287
|
this._cancelRetriesHandler = handle.cancel;
|
|
254
288
|
return handle.promise.then(() => this._connect());
|
|
@@ -47,7 +47,7 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
47
47
|
*
|
|
48
48
|
*/
|
|
49
49
|
constructor(connectionManager, options = {}) {
|
|
50
|
-
var _a;
|
|
50
|
+
var _a, _b;
|
|
51
51
|
super();
|
|
52
52
|
/** If we're in the process of creating a channel, this is a Promise which
|
|
53
53
|
* will resolve when the channel is set up. Otherwise, this is `null`.
|
|
@@ -57,6 +57,12 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
57
57
|
this._messages = [];
|
|
58
58
|
/** Oublished, but not yet confirmed messages. */
|
|
59
59
|
this._unconfirmedMessages = [];
|
|
60
|
+
/** Consumers which will be reconnected on channel errors etc. */
|
|
61
|
+
this._consumers = [];
|
|
62
|
+
/**
|
|
63
|
+
* True to create a ConfirmChannel. False to create a regular Channel.
|
|
64
|
+
*/
|
|
65
|
+
this._confirm = true;
|
|
60
66
|
/**
|
|
61
67
|
* True if the "worker" is busy sending messages. False if we need to
|
|
62
68
|
* start the worker to get stuff done.
|
|
@@ -75,10 +81,13 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
75
81
|
this._onConnect = this._onConnect.bind(this);
|
|
76
82
|
this._onDisconnect = this._onDisconnect.bind(this);
|
|
77
83
|
this._connectionManager = connectionManager;
|
|
84
|
+
this._confirm = (_a = options.confirm) !== null && _a !== void 0 ? _a : true;
|
|
78
85
|
this.name = options.name;
|
|
79
|
-
this.
|
|
86
|
+
this._publishTimeout = options.publishTimeout;
|
|
87
|
+
this._json = (_b = options.json) !== null && _b !== void 0 ? _b : false;
|
|
80
88
|
// Array of setup functions to call.
|
|
81
89
|
this._setups = [];
|
|
90
|
+
this._consumers = [];
|
|
82
91
|
if (options.setup) {
|
|
83
92
|
this._setups.push(options.setup);
|
|
84
93
|
}
|
|
@@ -177,15 +186,17 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
177
186
|
*/
|
|
178
187
|
publish(exchange, routingKey, content, options, done) {
|
|
179
188
|
return promise_breaker_1.default.addCallback(done, new Promise((resolve, reject) => {
|
|
180
|
-
|
|
189
|
+
const { timeout, ...opts } = options || {};
|
|
190
|
+
this._enqueueMessage({
|
|
181
191
|
type: 'publish',
|
|
182
192
|
exchange,
|
|
183
193
|
routingKey,
|
|
184
|
-
content,
|
|
185
|
-
options,
|
|
194
|
+
content: this._getEncodedMessage(content),
|
|
186
195
|
resolve,
|
|
187
196
|
reject,
|
|
188
|
-
|
|
197
|
+
options: opts,
|
|
198
|
+
isTimedout: false,
|
|
199
|
+
}, timeout || this._publishTimeout);
|
|
189
200
|
this._startWorker();
|
|
190
201
|
}));
|
|
191
202
|
}
|
|
@@ -199,23 +210,51 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
199
210
|
* `message` here should be a JSON-able object.
|
|
200
211
|
*/
|
|
201
212
|
sendToQueue(queue, content, options, done) {
|
|
213
|
+
const encodedContent = this._getEncodedMessage(content);
|
|
202
214
|
return promise_breaker_1.default.addCallback(done, new Promise((resolve, reject) => {
|
|
203
|
-
|
|
215
|
+
const { timeout, ...opts } = options || {};
|
|
216
|
+
this._enqueueMessage({
|
|
204
217
|
type: 'sendToQueue',
|
|
205
218
|
queue,
|
|
206
|
-
content,
|
|
207
|
-
options,
|
|
219
|
+
content: encodedContent,
|
|
208
220
|
resolve,
|
|
209
221
|
reject,
|
|
210
|
-
|
|
211
|
-
|
|
222
|
+
options: opts,
|
|
223
|
+
isTimedout: false,
|
|
224
|
+
}, timeout || this._publishTimeout);
|
|
225
|
+
this._startWorker();
|
|
212
226
|
}));
|
|
213
227
|
}
|
|
228
|
+
_enqueueMessage(message, timeout) {
|
|
229
|
+
if (timeout) {
|
|
230
|
+
message.timeout = setTimeout(() => {
|
|
231
|
+
let idx = this._messages.indexOf(message);
|
|
232
|
+
if (idx !== -1) {
|
|
233
|
+
this._messages.splice(idx, 1);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
idx = this._unconfirmedMessages.indexOf(message);
|
|
237
|
+
if (idx !== -1) {
|
|
238
|
+
this._unconfirmedMessages.splice(idx, 1);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
message.isTimedout = true;
|
|
242
|
+
message.reject(new Error('timeout'));
|
|
243
|
+
}, timeout);
|
|
244
|
+
}
|
|
245
|
+
this._messages.push(message);
|
|
246
|
+
}
|
|
214
247
|
// Called whenever we connect to the broker.
|
|
215
248
|
async _onConnect({ connection }) {
|
|
216
249
|
this._irrecoverableCode = undefined;
|
|
217
250
|
try {
|
|
218
|
-
|
|
251
|
+
let channel;
|
|
252
|
+
if (this._confirm) {
|
|
253
|
+
channel = await connection.createConfirmChannel();
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
channel = await connection.createChannel();
|
|
257
|
+
}
|
|
219
258
|
this._channel = channel;
|
|
220
259
|
this._channelHasRoom = true;
|
|
221
260
|
channel.on('close', () => this._onChannelClose(channel));
|
|
@@ -228,7 +267,11 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
228
267
|
return;
|
|
229
268
|
}
|
|
230
269
|
this.emit('error', err, { name: this.name });
|
|
231
|
-
})))
|
|
270
|
+
})))
|
|
271
|
+
.then(() => {
|
|
272
|
+
return Promise.all(this._consumers.map((c) => this._reconnectConsumer(c)));
|
|
273
|
+
})
|
|
274
|
+
.then(() => {
|
|
232
275
|
this._settingUp = undefined;
|
|
233
276
|
});
|
|
234
277
|
await this._settingUp;
|
|
@@ -280,11 +323,21 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
280
323
|
this._working = false;
|
|
281
324
|
if (this._messages.length !== 0) {
|
|
282
325
|
// Reject any unsent messages.
|
|
283
|
-
this._messages.forEach((message) =>
|
|
326
|
+
this._messages.forEach((message) => {
|
|
327
|
+
if (message.timeout) {
|
|
328
|
+
clearTimeout(message.timeout);
|
|
329
|
+
}
|
|
330
|
+
message.reject(new Error('Channel closed'));
|
|
331
|
+
});
|
|
284
332
|
}
|
|
285
333
|
if (this._unconfirmedMessages.length !== 0) {
|
|
286
334
|
// Reject any unconfirmed messages.
|
|
287
|
-
this._unconfirmedMessages.forEach((message) =>
|
|
335
|
+
this._unconfirmedMessages.forEach((message) => {
|
|
336
|
+
if (message.timeout) {
|
|
337
|
+
clearTimeout(message.timeout);
|
|
338
|
+
}
|
|
339
|
+
message.reject(new Error('Channel closed'));
|
|
340
|
+
});
|
|
288
341
|
}
|
|
289
342
|
this._connectionManager.removeListener('connect', this._onConnect);
|
|
290
343
|
this._connectionManager.removeListener('disconnect', this._onDisconnect);
|
|
@@ -366,31 +419,60 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
366
419
|
if (!message) {
|
|
367
420
|
break;
|
|
368
421
|
}
|
|
369
|
-
|
|
370
|
-
const encodedMessage = this._getEncodedMessage(message.content);
|
|
422
|
+
let thisCanSend = true;
|
|
371
423
|
switch (message.type) {
|
|
372
424
|
case 'publish': {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
425
|
+
if (this._confirm) {
|
|
426
|
+
this._unconfirmedMessages.push(message);
|
|
427
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, message.content, message.options, (err) => {
|
|
428
|
+
if (message.isTimedout) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
if (message.timeout) {
|
|
432
|
+
clearTimeout(message.timeout);
|
|
433
|
+
}
|
|
434
|
+
if (err) {
|
|
435
|
+
this._messageRejected(message, err);
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
this._messageResolved(message, thisCanSend);
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
if (message.timeout) {
|
|
444
|
+
clearTimeout(message.timeout);
|
|
377
445
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
});
|
|
446
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, message.content, message.options);
|
|
447
|
+
message.resolve(thisCanSend);
|
|
448
|
+
}
|
|
382
449
|
break;
|
|
383
450
|
}
|
|
384
451
|
case 'sendToQueue': {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
452
|
+
if (this._confirm) {
|
|
453
|
+
this._unconfirmedMessages.push(message);
|
|
454
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, message.content, message.options, (err) => {
|
|
455
|
+
if (message.isTimedout) {
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (message.timeout) {
|
|
459
|
+
clearTimeout(message.timeout);
|
|
460
|
+
}
|
|
461
|
+
if (err) {
|
|
462
|
+
this._messageRejected(message, err);
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
this._messageResolved(message, thisCanSend);
|
|
466
|
+
}
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
if (message.timeout) {
|
|
471
|
+
clearTimeout(message.timeout);
|
|
392
472
|
}
|
|
393
|
-
|
|
473
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, message.content, message.options);
|
|
474
|
+
message.resolve(thisCanSend);
|
|
475
|
+
}
|
|
394
476
|
break;
|
|
395
477
|
}
|
|
396
478
|
/* istanbul ignore next */
|
|
@@ -402,7 +484,9 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
402
484
|
if (this._channelHasRoom && this._messages.length > 0) {
|
|
403
485
|
setImmediate(() => this._publishQueuedMessages(workerNumber));
|
|
404
486
|
}
|
|
405
|
-
|
|
487
|
+
else {
|
|
488
|
+
this._working = false;
|
|
489
|
+
}
|
|
406
490
|
/* istanbul ignore next */
|
|
407
491
|
}
|
|
408
492
|
catch (err) {
|
|
@@ -410,6 +494,72 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
410
494
|
this.emit('error', err);
|
|
411
495
|
}
|
|
412
496
|
}
|
|
497
|
+
/**
|
|
498
|
+
* Setup a consumer
|
|
499
|
+
* This consumer will be reconnected on cancellation and channel errors.
|
|
500
|
+
*/
|
|
501
|
+
async consume(queue, onMessage, options = {}) {
|
|
502
|
+
const consumer = {
|
|
503
|
+
consumerTag: null,
|
|
504
|
+
queue,
|
|
505
|
+
onMessage,
|
|
506
|
+
options,
|
|
507
|
+
};
|
|
508
|
+
this._consumers.push(consumer);
|
|
509
|
+
await this._consume(consumer);
|
|
510
|
+
}
|
|
511
|
+
async _consume(consumer) {
|
|
512
|
+
if (!this._channel) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const { prefetch, ...options } = consumer.options;
|
|
516
|
+
if (typeof prefetch === 'number') {
|
|
517
|
+
this._channel.prefetch(prefetch, false);
|
|
518
|
+
}
|
|
519
|
+
const { consumerTag } = await this._channel.consume(consumer.queue, (msg) => {
|
|
520
|
+
if (!msg) {
|
|
521
|
+
consumer.consumerTag = null;
|
|
522
|
+
this._reconnectConsumer(consumer).catch((err) => {
|
|
523
|
+
if (err.isOperational && err.message.includes('BasicConsume; 404')) {
|
|
524
|
+
// Ignore errors caused by queue not declared. In
|
|
525
|
+
// those cases the connection will reconnect and
|
|
526
|
+
// then consumers reestablished. The full reconnect
|
|
527
|
+
// might be avoided if we assert the queue again
|
|
528
|
+
// before starting to consume.
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
throw err;
|
|
532
|
+
});
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
consumer.onMessage(msg);
|
|
536
|
+
}, options);
|
|
537
|
+
consumer.consumerTag = consumerTag;
|
|
538
|
+
}
|
|
539
|
+
async _reconnectConsumer(consumer) {
|
|
540
|
+
if (!this._consumers.includes(consumer)) {
|
|
541
|
+
// Intentionally canceled
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
await this._consume(consumer);
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Cancel all consumers
|
|
548
|
+
*/
|
|
549
|
+
async cancelAll() {
|
|
550
|
+
const consumers = this._consumers;
|
|
551
|
+
this._consumers = [];
|
|
552
|
+
if (!this._channel) {
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
const channel = this._channel;
|
|
556
|
+
await Promise.all(consumers.reduce((acc, consumer) => {
|
|
557
|
+
if (consumer.consumerTag) {
|
|
558
|
+
acc.push(channel.cancel(consumer.consumerTag));
|
|
559
|
+
}
|
|
560
|
+
return acc;
|
|
561
|
+
}, []));
|
|
562
|
+
}
|
|
413
563
|
/** Send an `ack` to the underlying channel. */
|
|
414
564
|
ack(message, allUpTo) {
|
|
415
565
|
this._channel && this._channel.ack(message, allUpTo);
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,10 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.connect = void 0;
|
|
6
|
+
exports.AmqpConnectionManagerClass = exports.connect = void 0;
|
|
7
7
|
const AmqpConnectionManager_js_1 = __importDefault(require("./AmqpConnectionManager.js"));
|
|
8
|
+
exports.AmqpConnectionManagerClass = AmqpConnectionManager_js_1.default;
|
|
8
9
|
function connect(urls, options) {
|
|
9
|
-
|
|
10
|
+
const conn = new AmqpConnectionManager_js_1.default(urls, options);
|
|
11
|
+
conn.connect().catch(() => {
|
|
12
|
+
/* noop */
|
|
13
|
+
});
|
|
14
|
+
return conn;
|
|
10
15
|
}
|
|
11
16
|
exports.connect = connect;
|
|
12
17
|
const amqp = { connect };
|
|
@@ -59,6 +59,7 @@ export interface IAmqpConnectionManager {
|
|
|
59
59
|
addListener(event: 'disconnect', listener: (arg: {
|
|
60
60
|
err: Error;
|
|
61
61
|
}) => void): this;
|
|
62
|
+
listeners(eventName: string | symbol): Function[];
|
|
62
63
|
on(event: string, listener: (...args: any[]) => void): this;
|
|
63
64
|
on(event: 'connect', listener: ConnectListener): this;
|
|
64
65
|
on(event: 'blocked', listener: (arg: {
|
|
@@ -96,13 +97,17 @@ export interface IAmqpConnectionManager {
|
|
|
96
97
|
err: Error;
|
|
97
98
|
}) => void): this;
|
|
98
99
|
removeListener(event: string, listener: (...args: any[]) => void): this;
|
|
100
|
+
connect(options?: {
|
|
101
|
+
timeout?: number;
|
|
102
|
+
}): Promise<void>;
|
|
103
|
+
reconnect(): void;
|
|
99
104
|
createChannel(options?: CreateChannelOpts): ChannelWrapper;
|
|
100
105
|
close(): Promise<void>;
|
|
101
106
|
isConnected(): boolean;
|
|
102
107
|
/** The current connection. */
|
|
103
|
-
|
|
108
|
+
readonly connection: Connection | undefined;
|
|
104
109
|
/** Returns the number of registered channels. */
|
|
105
|
-
|
|
110
|
+
readonly channelCount: number;
|
|
106
111
|
}
|
|
107
112
|
export default class AmqpConnectionManager extends EventEmitter implements IAmqpConnectionManager {
|
|
108
113
|
private _channels;
|
|
@@ -148,6 +153,15 @@ export default class AmqpConnectionManager extends EventEmitter implements IAmqp
|
|
|
148
153
|
* Note that if this is supplied, then `urls` is ignored.
|
|
149
154
|
*/
|
|
150
155
|
constructor(urls: ConnectionUrl | ConnectionUrl[] | undefined | null, options?: AmqpConnectionManagerOptions);
|
|
156
|
+
/**
|
|
157
|
+
* Start the connect retries and await the first connect result. Even if the initial connect fails or timeouts, the
|
|
158
|
+
* reconnect attempts will continue in the background.
|
|
159
|
+
* @param [options={}] -
|
|
160
|
+
* @param [options.timeout] - Time to wait for initial connect
|
|
161
|
+
*/
|
|
162
|
+
connect({ timeout }?: {
|
|
163
|
+
timeout?: number;
|
|
164
|
+
}): Promise<void>;
|
|
151
165
|
createChannel(options?: CreateChannelOpts): ChannelWrapper;
|
|
152
166
|
close(): Promise<void>;
|
|
153
167
|
isConnected(): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import amqp from 'amqplib';
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
2
|
+
import { EventEmitter, once } from 'events';
|
|
3
3
|
import pb from 'promise-breaker';
|
|
4
4
|
import { URL } from 'url';
|
|
5
5
|
import ChannelWrapper from './ChannelWrapper.js';
|
|
@@ -67,7 +67,41 @@ export default class AmqpConnectionManager extends EventEmitter {
|
|
|
67
67
|
// There will be one listener per channel, and there could be a lot of channels, so disable warnings from node.
|
|
68
68
|
this.setMaxListeners(0);
|
|
69
69
|
this._findServers = options.findServers || (() => Promise.resolve(urls));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Start the connect retries and await the first connect result. Even if the initial connect fails or timeouts, the
|
|
73
|
+
* reconnect attempts will continue in the background.
|
|
74
|
+
* @param [options={}] -
|
|
75
|
+
* @param [options.timeout] - Time to wait for initial connect
|
|
76
|
+
*/
|
|
77
|
+
async connect({ timeout } = {}) {
|
|
70
78
|
this._connect();
|
|
79
|
+
let reject;
|
|
80
|
+
const onDisconnect = ({ err }) => {
|
|
81
|
+
// Ignore disconnects caused by dead servers etc., but throw on operational errors like bad credentials.
|
|
82
|
+
if (err.isOperational) {
|
|
83
|
+
reject(err);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
await Promise.race([
|
|
88
|
+
once(this, 'connect'),
|
|
89
|
+
new Promise((_resolve, innerReject) => {
|
|
90
|
+
reject = innerReject;
|
|
91
|
+
this.on('disconnect', onDisconnect);
|
|
92
|
+
}),
|
|
93
|
+
...(timeout
|
|
94
|
+
? [
|
|
95
|
+
wait(timeout).promise.then(() => {
|
|
96
|
+
throw new Error('amqp-connection-manager: connect timeout');
|
|
97
|
+
}),
|
|
98
|
+
]
|
|
99
|
+
: []),
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
this.removeListener('disconnect', onDisconnect);
|
|
104
|
+
}
|
|
71
105
|
}
|
|
72
106
|
// `options` here are any options that can be passed to ChannelWrapper.
|
|
73
107
|
createChannel(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import * as amqplib from 'amqplib';
|
|
3
|
-
import {
|
|
2
|
+
import type * as amqplib from 'amqplib';
|
|
3
|
+
import { Options } from 'amqplib';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
import pb from 'promise-breaker';
|
|
6
6
|
import { IAmqpConnectionManager } from './AmqpConnectionManager.js';
|
|
7
|
-
export declare type
|
|
7
|
+
export declare type Channel = amqplib.ConfirmChannel | amqplib.Channel;
|
|
8
|
+
export declare type SetupFunc = ((channel: Channel, callback: (error?: Error) => void) => void) | ((channel: Channel) => Promise<void>) | ((channel: amqplib.ConfirmChannel, callback: (error?: Error) => void) => void) | ((channel: amqplib.ConfirmChannel) => Promise<void>);
|
|
8
9
|
export interface CreateChannelOpts {
|
|
9
10
|
/** Name for this channel. Used for debugging. */
|
|
10
11
|
name?: string;
|
|
@@ -13,11 +14,32 @@ export interface CreateChannelOpts {
|
|
|
13
14
|
* This function should either accept a callback, or return a Promise. See addSetup below
|
|
14
15
|
*/
|
|
15
16
|
setup?: SetupFunc;
|
|
17
|
+
/**
|
|
18
|
+
* True to create a ConfirmChannel (default). False to create a regular Channel.
|
|
19
|
+
*/
|
|
20
|
+
confirm?: boolean;
|
|
16
21
|
/**
|
|
17
22
|
* if true, then ChannelWrapper assumes all messages passed to publish() and sendToQueue() are plain JSON objects.
|
|
18
23
|
* These will be encoded automatically before being sent.
|
|
19
24
|
*/
|
|
20
25
|
json?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Default publish timeout in ms. Messages not published within the given time are rejected with a timeout error.
|
|
28
|
+
*/
|
|
29
|
+
publishTimeout?: number;
|
|
30
|
+
}
|
|
31
|
+
interface PublishOptions extends Options.Publish {
|
|
32
|
+
/** Message will be rejected after timeout ms */
|
|
33
|
+
timeout?: number;
|
|
34
|
+
}
|
|
35
|
+
interface ConsumerOptions extends amqplib.Options.Consume {
|
|
36
|
+
prefetch?: number;
|
|
37
|
+
}
|
|
38
|
+
interface Consumer {
|
|
39
|
+
consumerTag: string | null;
|
|
40
|
+
queue: string;
|
|
41
|
+
onMessage: (msg: amqplib.ConsumeMessage) => void;
|
|
42
|
+
options: ConsumerOptions;
|
|
21
43
|
}
|
|
22
44
|
/**
|
|
23
45
|
* Calls to `publish()` or `sendToQueue()` work just like in amqplib, but messages are queued internally and
|
|
@@ -45,12 +67,18 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
45
67
|
private _unconfirmedMessages;
|
|
46
68
|
/** Reason code during publish or sendtoqueue messages. */
|
|
47
69
|
private _irrecoverableCode;
|
|
70
|
+
/** Consumers which will be reconnected on channel errors etc. */
|
|
71
|
+
private _consumers;
|
|
48
72
|
/**
|
|
49
73
|
* The currently connected channel. Note that not all setup functions
|
|
50
74
|
* have been run on this channel until `@_settingUp` is either null or
|
|
51
75
|
* resolved.
|
|
52
76
|
*/
|
|
53
77
|
private _channel?;
|
|
78
|
+
/**
|
|
79
|
+
* True to create a ConfirmChannel. False to create a regular Channel.
|
|
80
|
+
*/
|
|
81
|
+
private _confirm;
|
|
54
82
|
/**
|
|
55
83
|
* True if the "worker" is busy sending messages. False if we need to
|
|
56
84
|
* start the worker to get stuff done.
|
|
@@ -66,6 +94,10 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
66
94
|
* True if the underlying channel has room for more messages.
|
|
67
95
|
*/
|
|
68
96
|
private _channelHasRoom;
|
|
97
|
+
/**
|
|
98
|
+
* Default publish timeout
|
|
99
|
+
*/
|
|
100
|
+
private _publishTimeout?;
|
|
69
101
|
name?: string;
|
|
70
102
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
71
103
|
addListener(event: 'connect', listener: () => void): this;
|
|
@@ -129,7 +161,7 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
129
161
|
* @param {function} [done] - Optional callback.
|
|
130
162
|
* @returns {void | Promise} - Resolves when complete.
|
|
131
163
|
*/
|
|
132
|
-
removeSetup(setup: SetupFunc, teardown?:
|
|
164
|
+
removeSetup(setup: SetupFunc, teardown?: SetupFunc, done?: pb.Callback<void>): Promise<void>;
|
|
133
165
|
/**
|
|
134
166
|
* Returns a Promise which resolves when this channel next connects.
|
|
135
167
|
* (Mainly here for unit testing...)
|
|
@@ -138,8 +170,9 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
138
170
|
* @returns - Resolves when connected.
|
|
139
171
|
*/
|
|
140
172
|
waitForConnect(done?: pb.Callback<void>): Promise<void>;
|
|
141
|
-
publish(exchange: string, routingKey: string, content: Buffer | string | unknown, options?:
|
|
142
|
-
sendToQueue(queue: string, content: Buffer | string | unknown, options?:
|
|
173
|
+
publish(exchange: string, routingKey: string, content: Buffer | string | unknown, options?: PublishOptions, done?: pb.Callback<boolean>): Promise<boolean>;
|
|
174
|
+
sendToQueue(queue: string, content: Buffer | string | unknown, options?: PublishOptions, done?: pb.Callback<boolean>): Promise<boolean>;
|
|
175
|
+
private _enqueueMessage;
|
|
143
176
|
/**
|
|
144
177
|
* Create a new ChannelWrapper.
|
|
145
178
|
*
|
|
@@ -169,6 +202,17 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
169
202
|
private _messageRejected;
|
|
170
203
|
private _getEncodedMessage;
|
|
171
204
|
private _publishQueuedMessages;
|
|
205
|
+
/**
|
|
206
|
+
* Setup a consumer
|
|
207
|
+
* This consumer will be reconnected on cancellation and channel errors.
|
|
208
|
+
*/
|
|
209
|
+
consume(queue: string, onMessage: Consumer['onMessage'], options?: ConsumerOptions): Promise<void>;
|
|
210
|
+
private _consume;
|
|
211
|
+
private _reconnectConsumer;
|
|
212
|
+
/**
|
|
213
|
+
* Cancel all consumers
|
|
214
|
+
*/
|
|
215
|
+
cancelAll(): Promise<void>;
|
|
172
216
|
/** Send an `ack` to the underlying channel. */
|
|
173
217
|
ack(message: amqplib.Message, allUpTo?: boolean): void;
|
|
174
218
|
/** Send an `ackAll` to the underlying channel. */
|
|
@@ -192,3 +236,4 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
192
236
|
/** Send a `get` to the underlying channel. */
|
|
193
237
|
get(queue: string, options?: Options.Get): Promise<amqplib.GetMessage | false>;
|
|
194
238
|
}
|
|
239
|
+
export {};
|
|
@@ -42,7 +42,7 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
42
42
|
*
|
|
43
43
|
*/
|
|
44
44
|
constructor(connectionManager, options = {}) {
|
|
45
|
-
var _a;
|
|
45
|
+
var _a, _b;
|
|
46
46
|
super();
|
|
47
47
|
/** If we're in the process of creating a channel, this is a Promise which
|
|
48
48
|
* will resolve when the channel is set up. Otherwise, this is `null`.
|
|
@@ -52,6 +52,12 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
52
52
|
this._messages = [];
|
|
53
53
|
/** Oublished, but not yet confirmed messages. */
|
|
54
54
|
this._unconfirmedMessages = [];
|
|
55
|
+
/** Consumers which will be reconnected on channel errors etc. */
|
|
56
|
+
this._consumers = [];
|
|
57
|
+
/**
|
|
58
|
+
* True to create a ConfirmChannel. False to create a regular Channel.
|
|
59
|
+
*/
|
|
60
|
+
this._confirm = true;
|
|
55
61
|
/**
|
|
56
62
|
* True if the "worker" is busy sending messages. False if we need to
|
|
57
63
|
* start the worker to get stuff done.
|
|
@@ -70,10 +76,13 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
70
76
|
this._onConnect = this._onConnect.bind(this);
|
|
71
77
|
this._onDisconnect = this._onDisconnect.bind(this);
|
|
72
78
|
this._connectionManager = connectionManager;
|
|
79
|
+
this._confirm = (_a = options.confirm) !== null && _a !== void 0 ? _a : true;
|
|
73
80
|
this.name = options.name;
|
|
74
|
-
this.
|
|
81
|
+
this._publishTimeout = options.publishTimeout;
|
|
82
|
+
this._json = (_b = options.json) !== null && _b !== void 0 ? _b : false;
|
|
75
83
|
// Array of setup functions to call.
|
|
76
84
|
this._setups = [];
|
|
85
|
+
this._consumers = [];
|
|
77
86
|
if (options.setup) {
|
|
78
87
|
this._setups.push(options.setup);
|
|
79
88
|
}
|
|
@@ -172,15 +181,17 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
172
181
|
*/
|
|
173
182
|
publish(exchange, routingKey, content, options, done) {
|
|
174
183
|
return pb.addCallback(done, new Promise((resolve, reject) => {
|
|
175
|
-
|
|
184
|
+
const { timeout, ...opts } = options || {};
|
|
185
|
+
this._enqueueMessage({
|
|
176
186
|
type: 'publish',
|
|
177
187
|
exchange,
|
|
178
188
|
routingKey,
|
|
179
|
-
content,
|
|
180
|
-
options,
|
|
189
|
+
content: this._getEncodedMessage(content),
|
|
181
190
|
resolve,
|
|
182
191
|
reject,
|
|
183
|
-
|
|
192
|
+
options: opts,
|
|
193
|
+
isTimedout: false,
|
|
194
|
+
}, timeout || this._publishTimeout);
|
|
184
195
|
this._startWorker();
|
|
185
196
|
}));
|
|
186
197
|
}
|
|
@@ -194,23 +205,51 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
194
205
|
* `message` here should be a JSON-able object.
|
|
195
206
|
*/
|
|
196
207
|
sendToQueue(queue, content, options, done) {
|
|
208
|
+
const encodedContent = this._getEncodedMessage(content);
|
|
197
209
|
return pb.addCallback(done, new Promise((resolve, reject) => {
|
|
198
|
-
|
|
210
|
+
const { timeout, ...opts } = options || {};
|
|
211
|
+
this._enqueueMessage({
|
|
199
212
|
type: 'sendToQueue',
|
|
200
213
|
queue,
|
|
201
|
-
content,
|
|
202
|
-
options,
|
|
214
|
+
content: encodedContent,
|
|
203
215
|
resolve,
|
|
204
216
|
reject,
|
|
205
|
-
|
|
206
|
-
|
|
217
|
+
options: opts,
|
|
218
|
+
isTimedout: false,
|
|
219
|
+
}, timeout || this._publishTimeout);
|
|
220
|
+
this._startWorker();
|
|
207
221
|
}));
|
|
208
222
|
}
|
|
223
|
+
_enqueueMessage(message, timeout) {
|
|
224
|
+
if (timeout) {
|
|
225
|
+
message.timeout = setTimeout(() => {
|
|
226
|
+
let idx = this._messages.indexOf(message);
|
|
227
|
+
if (idx !== -1) {
|
|
228
|
+
this._messages.splice(idx, 1);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
idx = this._unconfirmedMessages.indexOf(message);
|
|
232
|
+
if (idx !== -1) {
|
|
233
|
+
this._unconfirmedMessages.splice(idx, 1);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
message.isTimedout = true;
|
|
237
|
+
message.reject(new Error('timeout'));
|
|
238
|
+
}, timeout);
|
|
239
|
+
}
|
|
240
|
+
this._messages.push(message);
|
|
241
|
+
}
|
|
209
242
|
// Called whenever we connect to the broker.
|
|
210
243
|
async _onConnect({ connection }) {
|
|
211
244
|
this._irrecoverableCode = undefined;
|
|
212
245
|
try {
|
|
213
|
-
|
|
246
|
+
let channel;
|
|
247
|
+
if (this._confirm) {
|
|
248
|
+
channel = await connection.createConfirmChannel();
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
channel = await connection.createChannel();
|
|
252
|
+
}
|
|
214
253
|
this._channel = channel;
|
|
215
254
|
this._channelHasRoom = true;
|
|
216
255
|
channel.on('close', () => this._onChannelClose(channel));
|
|
@@ -223,7 +262,11 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
223
262
|
return;
|
|
224
263
|
}
|
|
225
264
|
this.emit('error', err, { name: this.name });
|
|
226
|
-
})))
|
|
265
|
+
})))
|
|
266
|
+
.then(() => {
|
|
267
|
+
return Promise.all(this._consumers.map((c) => this._reconnectConsumer(c)));
|
|
268
|
+
})
|
|
269
|
+
.then(() => {
|
|
227
270
|
this._settingUp = undefined;
|
|
228
271
|
});
|
|
229
272
|
await this._settingUp;
|
|
@@ -275,11 +318,21 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
275
318
|
this._working = false;
|
|
276
319
|
if (this._messages.length !== 0) {
|
|
277
320
|
// Reject any unsent messages.
|
|
278
|
-
this._messages.forEach((message) =>
|
|
321
|
+
this._messages.forEach((message) => {
|
|
322
|
+
if (message.timeout) {
|
|
323
|
+
clearTimeout(message.timeout);
|
|
324
|
+
}
|
|
325
|
+
message.reject(new Error('Channel closed'));
|
|
326
|
+
});
|
|
279
327
|
}
|
|
280
328
|
if (this._unconfirmedMessages.length !== 0) {
|
|
281
329
|
// Reject any unconfirmed messages.
|
|
282
|
-
this._unconfirmedMessages.forEach((message) =>
|
|
330
|
+
this._unconfirmedMessages.forEach((message) => {
|
|
331
|
+
if (message.timeout) {
|
|
332
|
+
clearTimeout(message.timeout);
|
|
333
|
+
}
|
|
334
|
+
message.reject(new Error('Channel closed'));
|
|
335
|
+
});
|
|
283
336
|
}
|
|
284
337
|
this._connectionManager.removeListener('connect', this._onConnect);
|
|
285
338
|
this._connectionManager.removeListener('disconnect', this._onDisconnect);
|
|
@@ -361,31 +414,60 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
361
414
|
if (!message) {
|
|
362
415
|
break;
|
|
363
416
|
}
|
|
364
|
-
|
|
365
|
-
const encodedMessage = this._getEncodedMessage(message.content);
|
|
417
|
+
let thisCanSend = true;
|
|
366
418
|
switch (message.type) {
|
|
367
419
|
case 'publish': {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
420
|
+
if (this._confirm) {
|
|
421
|
+
this._unconfirmedMessages.push(message);
|
|
422
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, message.content, message.options, (err) => {
|
|
423
|
+
if (message.isTimedout) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
if (message.timeout) {
|
|
427
|
+
clearTimeout(message.timeout);
|
|
428
|
+
}
|
|
429
|
+
if (err) {
|
|
430
|
+
this._messageRejected(message, err);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
this._messageResolved(message, thisCanSend);
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
if (message.timeout) {
|
|
439
|
+
clearTimeout(message.timeout);
|
|
372
440
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
});
|
|
441
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, message.content, message.options);
|
|
442
|
+
message.resolve(thisCanSend);
|
|
443
|
+
}
|
|
377
444
|
break;
|
|
378
445
|
}
|
|
379
446
|
case 'sendToQueue': {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
447
|
+
if (this._confirm) {
|
|
448
|
+
this._unconfirmedMessages.push(message);
|
|
449
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, message.content, message.options, (err) => {
|
|
450
|
+
if (message.isTimedout) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
if (message.timeout) {
|
|
454
|
+
clearTimeout(message.timeout);
|
|
455
|
+
}
|
|
456
|
+
if (err) {
|
|
457
|
+
this._messageRejected(message, err);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
this._messageResolved(message, thisCanSend);
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
if (message.timeout) {
|
|
466
|
+
clearTimeout(message.timeout);
|
|
387
467
|
}
|
|
388
|
-
|
|
468
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, message.content, message.options);
|
|
469
|
+
message.resolve(thisCanSend);
|
|
470
|
+
}
|
|
389
471
|
break;
|
|
390
472
|
}
|
|
391
473
|
/* istanbul ignore next */
|
|
@@ -397,7 +479,9 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
397
479
|
if (this._channelHasRoom && this._messages.length > 0) {
|
|
398
480
|
setImmediate(() => this._publishQueuedMessages(workerNumber));
|
|
399
481
|
}
|
|
400
|
-
|
|
482
|
+
else {
|
|
483
|
+
this._working = false;
|
|
484
|
+
}
|
|
401
485
|
/* istanbul ignore next */
|
|
402
486
|
}
|
|
403
487
|
catch (err) {
|
|
@@ -405,6 +489,72 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
405
489
|
this.emit('error', err);
|
|
406
490
|
}
|
|
407
491
|
}
|
|
492
|
+
/**
|
|
493
|
+
* Setup a consumer
|
|
494
|
+
* This consumer will be reconnected on cancellation and channel errors.
|
|
495
|
+
*/
|
|
496
|
+
async consume(queue, onMessage, options = {}) {
|
|
497
|
+
const consumer = {
|
|
498
|
+
consumerTag: null,
|
|
499
|
+
queue,
|
|
500
|
+
onMessage,
|
|
501
|
+
options,
|
|
502
|
+
};
|
|
503
|
+
this._consumers.push(consumer);
|
|
504
|
+
await this._consume(consumer);
|
|
505
|
+
}
|
|
506
|
+
async _consume(consumer) {
|
|
507
|
+
if (!this._channel) {
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
const { prefetch, ...options } = consumer.options;
|
|
511
|
+
if (typeof prefetch === 'number') {
|
|
512
|
+
this._channel.prefetch(prefetch, false);
|
|
513
|
+
}
|
|
514
|
+
const { consumerTag } = await this._channel.consume(consumer.queue, (msg) => {
|
|
515
|
+
if (!msg) {
|
|
516
|
+
consumer.consumerTag = null;
|
|
517
|
+
this._reconnectConsumer(consumer).catch((err) => {
|
|
518
|
+
if (err.isOperational && err.message.includes('BasicConsume; 404')) {
|
|
519
|
+
// Ignore errors caused by queue not declared. In
|
|
520
|
+
// those cases the connection will reconnect and
|
|
521
|
+
// then consumers reestablished. The full reconnect
|
|
522
|
+
// might be avoided if we assert the queue again
|
|
523
|
+
// before starting to consume.
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
throw err;
|
|
527
|
+
});
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
consumer.onMessage(msg);
|
|
531
|
+
}, options);
|
|
532
|
+
consumer.consumerTag = consumerTag;
|
|
533
|
+
}
|
|
534
|
+
async _reconnectConsumer(consumer) {
|
|
535
|
+
if (!this._consumers.includes(consumer)) {
|
|
536
|
+
// Intentionally canceled
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
await this._consume(consumer);
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Cancel all consumers
|
|
543
|
+
*/
|
|
544
|
+
async cancelAll() {
|
|
545
|
+
const consumers = this._consumers;
|
|
546
|
+
this._consumers = [];
|
|
547
|
+
if (!this._channel) {
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
const channel = this._channel;
|
|
551
|
+
await Promise.all(consumers.reduce((acc, consumer) => {
|
|
552
|
+
if (consumer.consumerTag) {
|
|
553
|
+
acc.push(channel.cancel(consumer.consumerTag));
|
|
554
|
+
}
|
|
555
|
+
return acc;
|
|
556
|
+
}, []));
|
|
557
|
+
}
|
|
408
558
|
/** Send an `ack` to the underlying channel. */
|
|
409
559
|
ack(message, allUpTo) {
|
|
410
560
|
this._channel && this._channel.ack(message, allUpTo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrapper.js","sourceRoot":"","sources":["../../src/ChannelWrapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChannelWrapper.js","sourceRoot":"","sources":["../../src/ChannelWrapper.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { AmqpConnectionManagerOptions, ConnectionUrl, IAmqpConnectionManager } from './AmqpConnectionManager.js';
|
|
1
|
+
import AmqpConnectionManager, { AmqpConnectionManagerOptions, ConnectionUrl, IAmqpConnectionManager } from './AmqpConnectionManager.js';
|
|
2
2
|
export type { AmqpConnectionManagerOptions, ConnectionUrl, IAmqpConnectionManager as AmqpConnectionManager, } from './AmqpConnectionManager.js';
|
|
3
|
-
export type { CreateChannelOpts, default as ChannelWrapper, SetupFunc } from './ChannelWrapper.js';
|
|
3
|
+
export type { CreateChannelOpts, default as ChannelWrapper, SetupFunc, Channel, } from './ChannelWrapper.js';
|
|
4
4
|
export declare function connect(urls: ConnectionUrl | ConnectionUrl[] | undefined | null, options?: AmqpConnectionManagerOptions): IAmqpConnectionManager;
|
|
5
|
+
export { AmqpConnectionManager as AmqpConnectionManagerClass };
|
|
5
6
|
declare const amqp: {
|
|
6
7
|
connect: typeof connect;
|
|
7
8
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import AmqpConnectionManager from './AmqpConnectionManager.js';
|
|
2
2
|
export function connect(urls, options) {
|
|
3
|
-
|
|
3
|
+
const conn = new AmqpConnectionManager(urls, options);
|
|
4
|
+
conn.connect().catch(() => {
|
|
5
|
+
/* noop */
|
|
6
|
+
});
|
|
7
|
+
return conn;
|
|
4
8
|
}
|
|
9
|
+
export { AmqpConnectionManager as AmqpConnectionManagerClass };
|
|
5
10
|
const amqp = { connect };
|
|
6
11
|
export default amqp;
|
|
7
12
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAIN,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAIN,MAAM,4BAA4B,CAAC;AAcpC,MAAM,UAAU,OAAO,CACnB,IAAwD,EACxD,OAAsC;IAEtC,MAAM,IAAI,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACtB,UAAU;IACd,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,qBAAqB,IAAI,0BAA0B,EAAE,CAAC;AAE/D,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;AAEzB,eAAe,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amqp-connection-manager",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "Auto-reconnect and round robin support for amqplib.",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -16,9 +16,7 @@
|
|
|
16
16
|
"dist/**/*"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"promise-breaker": "^5.0.0"
|
|
20
|
-
"ts-node": "^10.2.1",
|
|
21
|
-
"typescript": "^4.3.5"
|
|
19
|
+
"promise-breaker": "^5.0.0"
|
|
22
20
|
},
|
|
23
21
|
"peerDependencies": {
|
|
24
22
|
"amqplib": "*"
|
|
@@ -44,7 +42,6 @@
|
|
|
44
42
|
"coveralls": "^3.1.0",
|
|
45
43
|
"cross-env": "^7.0.2",
|
|
46
44
|
"eslint": "^7.8.1",
|
|
47
|
-
"eslint-config-benbria": "^4.0.3",
|
|
48
45
|
"eslint-config-prettier": "^8.3.0",
|
|
49
46
|
"eslint-plugin-import": "^2.24.1",
|
|
50
47
|
"eslint-plugin-promise": "^5.0.0",
|
|
@@ -59,7 +56,9 @@
|
|
|
59
56
|
"pretty-quick": "^3.1.1",
|
|
60
57
|
"promise-tools": "^2.1.0",
|
|
61
58
|
"semantic-release": "^17.1.1",
|
|
62
|
-
"ts-jest": "^27.0.5"
|
|
59
|
+
"ts-jest": "^27.0.5",
|
|
60
|
+
"ts-node": "^10.2.1",
|
|
61
|
+
"typescript": "^4.3.5"
|
|
63
62
|
},
|
|
64
63
|
"engines": {
|
|
65
64
|
"node": ">=10.0.0",
|