amqp-connection-manager 3.4.4 → 3.5.2
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/cjs/AmqpConnectionManager.js +28 -2
- package/dist/cjs/ChannelWrapper.js +99 -87
- package/dist/esm/AmqpConnectionManager.d.ts +2 -0
- package/dist/esm/AmqpConnectionManager.js +28 -2
- package/dist/esm/AmqpConnectionManager.js.map +1 -1
- package/dist/esm/ChannelWrapper.d.ts +14 -9
- package/dist/esm/ChannelWrapper.js +99 -87
- package/dist/esm/ChannelWrapper.js.map +1 -1
- package/package.json +1 -1
|
@@ -115,6 +115,29 @@ class AmqpConnectionManager extends events_1.EventEmitter {
|
|
|
115
115
|
isConnected() {
|
|
116
116
|
return !!this._currentConnection;
|
|
117
117
|
}
|
|
118
|
+
/** Force reconnect - noop unless connected */
|
|
119
|
+
reconnect() {
|
|
120
|
+
if (this._closed) {
|
|
121
|
+
throw new Error('cannot reconnect after close');
|
|
122
|
+
}
|
|
123
|
+
// If we have a connection, close it and immediately connect again.
|
|
124
|
+
// Wait for ordinary reconnect otherwise.
|
|
125
|
+
if (this._currentConnection) {
|
|
126
|
+
this._currentConnection.removeAllListeners();
|
|
127
|
+
this._currentConnection
|
|
128
|
+
.close()
|
|
129
|
+
.catch(() => {
|
|
130
|
+
// noop
|
|
131
|
+
})
|
|
132
|
+
.then(() => {
|
|
133
|
+
this._currentConnection = undefined;
|
|
134
|
+
this._disconnectSent = true;
|
|
135
|
+
this.emit('disconnect', { err: new Error('forced reconnect') });
|
|
136
|
+
return this._connect();
|
|
137
|
+
})
|
|
138
|
+
.catch(neverThrows);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
118
141
|
/** The current connection. */
|
|
119
142
|
get connection() {
|
|
120
143
|
return this._currentConnection;
|
|
@@ -154,12 +177,15 @@ class AmqpConnectionManager extends events_1.EventEmitter {
|
|
|
154
177
|
// Round robin between brokers
|
|
155
178
|
const url = this._urls[this._currentUrl];
|
|
156
179
|
this._currentUrl++;
|
|
157
|
-
|
|
180
|
+
// Set connectionOptions to the setting in the class instance (which came via the constructor)
|
|
181
|
+
let connectionOptions = this.connectionOptions;
|
|
158
182
|
let originalUrl;
|
|
159
183
|
let connect;
|
|
160
184
|
if (typeof url === 'object' && 'url' in url) {
|
|
161
185
|
originalUrl = connect = url.url;
|
|
162
|
-
|
|
186
|
+
// If URL is an object, pull out any specific URL connectionOptions for it or use the
|
|
187
|
+
// instance connectionOptions if none were provided for this specific URL.
|
|
188
|
+
connectionOptions = url.connectionOptions || this.connectionOptions;
|
|
163
189
|
}
|
|
164
190
|
else if (typeof url === 'string') {
|
|
165
191
|
originalUrl = connect = url;
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const events_1 = require("events");
|
|
7
7
|
const promise_breaker_1 = __importDefault(require("promise-breaker"));
|
|
8
|
+
const MAX_MESSAGES_PER_BATCH = 1000;
|
|
8
9
|
const IRRECOVERABLE_ERRORS = [
|
|
9
10
|
403,
|
|
10
11
|
404,
|
|
@@ -67,6 +68,10 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
67
68
|
* workers ever do wake up, they'll know to stop working.
|
|
68
69
|
*/
|
|
69
70
|
this._workerNumber = 0;
|
|
71
|
+
/**
|
|
72
|
+
* True if the underlying channel has room for more messages.
|
|
73
|
+
*/
|
|
74
|
+
this._channelHasRoom = true;
|
|
70
75
|
this._onConnect = this._onConnect.bind(this);
|
|
71
76
|
this._onDisconnect = this._onDisconnect.bind(this);
|
|
72
77
|
this._connectionManager = connectionManager;
|
|
@@ -212,7 +217,9 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
212
217
|
try {
|
|
213
218
|
const channel = await connection.createConfirmChannel();
|
|
214
219
|
this._channel = channel;
|
|
220
|
+
this._channelHasRoom = true;
|
|
215
221
|
channel.on('close', () => this._onChannelClose(channel));
|
|
222
|
+
channel.on('drain', () => this._onChannelDrain());
|
|
216
223
|
this._settingUp = Promise.all(this._setups.map((setupFn) =>
|
|
217
224
|
// TODO: Use a timeout here to guard against setupFns that never resolve?
|
|
218
225
|
promise_breaker_1.default.call(setupFn, this, channel).catch((err) => {
|
|
@@ -229,13 +236,6 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
229
236
|
// Can happen if channel closes while we're setting up.
|
|
230
237
|
return;
|
|
231
238
|
}
|
|
232
|
-
if (this._unconfirmedMessages.length > 0) {
|
|
233
|
-
// requeue any messages that were left unconfirmed when connection was lost
|
|
234
|
-
let message;
|
|
235
|
-
while ((message = this._unconfirmedMessages.shift())) {
|
|
236
|
-
this._messages.push(message);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
239
|
// Since we just connected, publish any queued messages
|
|
240
240
|
this._startWorker();
|
|
241
241
|
this.emit('connect');
|
|
@@ -253,6 +253,11 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
253
253
|
}
|
|
254
254
|
// Wait for another reconnect to create a new channel.
|
|
255
255
|
}
|
|
256
|
+
/** Called whenever the channel drains. */
|
|
257
|
+
_onChannelDrain() {
|
|
258
|
+
this._channelHasRoom = true;
|
|
259
|
+
this._startWorker();
|
|
260
|
+
}
|
|
256
261
|
// Called whenever we disconnect from the AMQP server.
|
|
257
262
|
_onDisconnect(ex) {
|
|
258
263
|
this._irrecoverableCode = ex.err instanceof Error ? ex.err.code : undefined;
|
|
@@ -290,7 +295,7 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
290
295
|
});
|
|
291
296
|
}
|
|
292
297
|
_shouldPublish() {
|
|
293
|
-
return this._messages.length > 0 && !this._settingUp && !!this._channel;
|
|
298
|
+
return (this._messages.length > 0 && !this._settingUp && !!this._channel && this._channelHasRoom);
|
|
294
299
|
}
|
|
295
300
|
// Start publishing queued messages, if there isn't already a worker doing this.
|
|
296
301
|
_startWorker() {
|
|
@@ -304,6 +309,44 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
304
309
|
_canWaitReconnection() {
|
|
305
310
|
return !this._irrecoverableCode || !IRRECOVERABLE_ERRORS.includes(this._irrecoverableCode);
|
|
306
311
|
}
|
|
312
|
+
_messageResolved(message, result) {
|
|
313
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
314
|
+
message.resolve(result);
|
|
315
|
+
}
|
|
316
|
+
_messageRejected(message, err) {
|
|
317
|
+
if (!this._channel && this._canWaitReconnection()) {
|
|
318
|
+
// Tried to write to a closed channel. Leave the message in the queue and we'll try again when
|
|
319
|
+
// we reconnect.
|
|
320
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
321
|
+
this._messages.push(message);
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
// Something went wrong trying to send this message - could be JSON.stringify failed, could be
|
|
325
|
+
// the broker rejected the message. Either way, reject it back
|
|
326
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
327
|
+
message.reject(err);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
_getEncodedMessage(content) {
|
|
331
|
+
let encodedMessage;
|
|
332
|
+
if (this._json) {
|
|
333
|
+
encodedMessage = Buffer.from(JSON.stringify(content));
|
|
334
|
+
}
|
|
335
|
+
else if (typeof content === 'string') {
|
|
336
|
+
encodedMessage = Buffer.from(content);
|
|
337
|
+
}
|
|
338
|
+
else if (content instanceof Buffer) {
|
|
339
|
+
encodedMessage = content;
|
|
340
|
+
}
|
|
341
|
+
else if (typeof content === 'object' && typeof content.toString === 'function') {
|
|
342
|
+
encodedMessage = Buffer.from(content.toString());
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
console.warn('amqp-connection-manager: Sending JSON message, but json option not speicifed');
|
|
346
|
+
encodedMessage = Buffer.from(JSON.stringify(content));
|
|
347
|
+
}
|
|
348
|
+
return encodedMessage;
|
|
349
|
+
}
|
|
307
350
|
_publishQueuedMessages(workerNumber) {
|
|
308
351
|
const channel = this._channel;
|
|
309
352
|
if (!channel ||
|
|
@@ -314,88 +357,57 @@ class ChannelWrapper extends events_1.EventEmitter {
|
|
|
314
357
|
this._working = false;
|
|
315
358
|
return;
|
|
316
359
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
if (
|
|
324
|
-
|
|
325
|
-
}
|
|
326
|
-
else if (typeof message.content === 'string') {
|
|
327
|
-
encodedMessage = Buffer.from(message.content);
|
|
328
|
-
}
|
|
329
|
-
else if (message.content instanceof Buffer) {
|
|
330
|
-
encodedMessage = message.content;
|
|
331
|
-
}
|
|
332
|
-
else if (typeof message.content === 'object' &&
|
|
333
|
-
typeof message.content.toString === 'function') {
|
|
334
|
-
encodedMessage = Buffer.from(message.content.toString());
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
throw new Error('Invalid message content');
|
|
360
|
+
try {
|
|
361
|
+
// Send messages in batches of 1000 - don't want to starve the event loop.
|
|
362
|
+
let sendsLeft = MAX_MESSAGES_PER_BATCH;
|
|
363
|
+
while (this._channelHasRoom && this._messages.length > 0 && sendsLeft > 0) {
|
|
364
|
+
sendsLeft--;
|
|
365
|
+
const message = this._messages.shift();
|
|
366
|
+
if (!message) {
|
|
367
|
+
break;
|
|
338
368
|
}
|
|
339
|
-
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
case 'sendToQueue':
|
|
354
|
-
return new Promise(function (resolve, reject) {
|
|
355
|
-
result = channel.sendToQueue(message.queue, encodedMessage, message.options, (err) => {
|
|
356
|
-
if (err) {
|
|
357
|
-
reject(err);
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
setImmediate(() => resolve(result));
|
|
361
|
-
}
|
|
362
|
-
});
|
|
363
|
-
});
|
|
364
|
-
/* istanbul ignore next */
|
|
365
|
-
default:
|
|
366
|
-
throw new Error(`Unhandled message type ${message.type}`);
|
|
369
|
+
this._unconfirmedMessages.push(message);
|
|
370
|
+
const encodedMessage = this._getEncodedMessage(message.content);
|
|
371
|
+
switch (message.type) {
|
|
372
|
+
case 'publish': {
|
|
373
|
+
let thisCanSend = true;
|
|
374
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, encodedMessage, message.options, (err) => {
|
|
375
|
+
if (err) {
|
|
376
|
+
this._messageRejected(message, err);
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
this._messageResolved(message, thisCanSend);
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
break;
|
|
367
383
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
// we reconnect.
|
|
384
|
-
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
385
|
-
this._messages.push(message);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
// Something went wrong trying to send this message - could be JSON.stringify failed, could be
|
|
389
|
-
// the broker rejected the message. Either way, reject it back
|
|
390
|
-
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
391
|
-
message.reject(err);
|
|
384
|
+
case 'sendToQueue': {
|
|
385
|
+
let thisCanSend = true;
|
|
386
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, encodedMessage, message.options, (err) => {
|
|
387
|
+
if (err) {
|
|
388
|
+
this._messageRejected(message, err);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
this._messageResolved(message, thisCanSend);
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
/* istanbul ignore next */
|
|
397
|
+
default:
|
|
398
|
+
throw new Error(`Unhandled message type ${message.type}`);
|
|
392
399
|
}
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
this.
|
|
397
|
-
|
|
398
|
-
|
|
400
|
+
}
|
|
401
|
+
// If we didn't send all the messages, send some more...
|
|
402
|
+
if (this._channelHasRoom && this._messages.length > 0) {
|
|
403
|
+
setImmediate(() => this._publishQueuedMessages(workerNumber));
|
|
404
|
+
}
|
|
405
|
+
this._working = false;
|
|
406
|
+
/* istanbul ignore next */
|
|
407
|
+
}
|
|
408
|
+
catch (err) {
|
|
409
|
+
this._working = false;
|
|
410
|
+
this.emit('error', err);
|
|
399
411
|
}
|
|
400
412
|
}
|
|
401
413
|
/** Send an `ack` to the underlying channel. */
|
|
@@ -151,6 +151,8 @@ export default class AmqpConnectionManager extends EventEmitter implements IAmqp
|
|
|
151
151
|
createChannel(options?: CreateChannelOpts): ChannelWrapper;
|
|
152
152
|
close(): Promise<void>;
|
|
153
153
|
isConnected(): boolean;
|
|
154
|
+
/** Force reconnect - noop unless connected */
|
|
155
|
+
reconnect(): void;
|
|
154
156
|
/** The current connection. */
|
|
155
157
|
get connection(): Connection | undefined;
|
|
156
158
|
/** Returns the number of registered channels. */
|
|
@@ -110,6 +110,29 @@ export default class AmqpConnectionManager extends EventEmitter {
|
|
|
110
110
|
isConnected() {
|
|
111
111
|
return !!this._currentConnection;
|
|
112
112
|
}
|
|
113
|
+
/** Force reconnect - noop unless connected */
|
|
114
|
+
reconnect() {
|
|
115
|
+
if (this._closed) {
|
|
116
|
+
throw new Error('cannot reconnect after close');
|
|
117
|
+
}
|
|
118
|
+
// If we have a connection, close it and immediately connect again.
|
|
119
|
+
// Wait for ordinary reconnect otherwise.
|
|
120
|
+
if (this._currentConnection) {
|
|
121
|
+
this._currentConnection.removeAllListeners();
|
|
122
|
+
this._currentConnection
|
|
123
|
+
.close()
|
|
124
|
+
.catch(() => {
|
|
125
|
+
// noop
|
|
126
|
+
})
|
|
127
|
+
.then(() => {
|
|
128
|
+
this._currentConnection = undefined;
|
|
129
|
+
this._disconnectSent = true;
|
|
130
|
+
this.emit('disconnect', { err: new Error('forced reconnect') });
|
|
131
|
+
return this._connect();
|
|
132
|
+
})
|
|
133
|
+
.catch(neverThrows);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
113
136
|
/** The current connection. */
|
|
114
137
|
get connection() {
|
|
115
138
|
return this._currentConnection;
|
|
@@ -149,12 +172,15 @@ export default class AmqpConnectionManager extends EventEmitter {
|
|
|
149
172
|
// Round robin between brokers
|
|
150
173
|
const url = this._urls[this._currentUrl];
|
|
151
174
|
this._currentUrl++;
|
|
152
|
-
|
|
175
|
+
// Set connectionOptions to the setting in the class instance (which came via the constructor)
|
|
176
|
+
let connectionOptions = this.connectionOptions;
|
|
153
177
|
let originalUrl;
|
|
154
178
|
let connect;
|
|
155
179
|
if (typeof url === 'object' && 'url' in url) {
|
|
156
180
|
originalUrl = connect = url.url;
|
|
157
|
-
|
|
181
|
+
// If URL is an object, pull out any specific URL connectionOptions for it or use the
|
|
182
|
+
// instance connectionOptions if none were provided for this specific URL.
|
|
183
|
+
connectionOptions = url.connectionOptions || this.connectionOptions;
|
|
158
184
|
}
|
|
159
185
|
else if (typeof url === 'string') {
|
|
160
186
|
originalUrl = connect = url;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,10 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
62
62
|
* workers ever do wake up, they'll know to stop working.
|
|
63
63
|
*/
|
|
64
64
|
private _workerNumber;
|
|
65
|
+
/**
|
|
66
|
+
* True if the underlying channel has room for more messages.
|
|
67
|
+
*/
|
|
68
|
+
private _channelHasRoom;
|
|
65
69
|
name?: string;
|
|
66
70
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
67
71
|
addListener(event: 'connect', listener: () => void): this;
|
|
@@ -153,17 +157,18 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
153
157
|
constructor(connectionManager: IAmqpConnectionManager, options?: CreateChannelOpts);
|
|
154
158
|
private _onConnect;
|
|
155
159
|
private _onChannelClose;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
};
|
|
160
|
-
}): void;
|
|
160
|
+
/** Called whenever the channel drains. */
|
|
161
|
+
private _onChannelDrain;
|
|
162
|
+
private _onDisconnect;
|
|
161
163
|
queueLength(): number;
|
|
162
164
|
close(): Promise<void>;
|
|
163
|
-
_shouldPublish
|
|
164
|
-
_startWorker
|
|
165
|
-
_canWaitReconnection
|
|
166
|
-
|
|
165
|
+
private _shouldPublish;
|
|
166
|
+
private _startWorker;
|
|
167
|
+
private _canWaitReconnection;
|
|
168
|
+
private _messageResolved;
|
|
169
|
+
private _messageRejected;
|
|
170
|
+
private _getEncodedMessage;
|
|
171
|
+
private _publishQueuedMessages;
|
|
167
172
|
/** Send an `ack` to the underlying channel. */
|
|
168
173
|
ack(message: amqplib.Message, allUpTo?: boolean): void;
|
|
169
174
|
/** Send an `ackAll` to the underlying channel. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import pb from 'promise-breaker';
|
|
3
|
+
const MAX_MESSAGES_PER_BATCH = 1000;
|
|
3
4
|
const IRRECOVERABLE_ERRORS = [
|
|
4
5
|
403,
|
|
5
6
|
404,
|
|
@@ -62,6 +63,10 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
62
63
|
* workers ever do wake up, they'll know to stop working.
|
|
63
64
|
*/
|
|
64
65
|
this._workerNumber = 0;
|
|
66
|
+
/**
|
|
67
|
+
* True if the underlying channel has room for more messages.
|
|
68
|
+
*/
|
|
69
|
+
this._channelHasRoom = true;
|
|
65
70
|
this._onConnect = this._onConnect.bind(this);
|
|
66
71
|
this._onDisconnect = this._onDisconnect.bind(this);
|
|
67
72
|
this._connectionManager = connectionManager;
|
|
@@ -207,7 +212,9 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
207
212
|
try {
|
|
208
213
|
const channel = await connection.createConfirmChannel();
|
|
209
214
|
this._channel = channel;
|
|
215
|
+
this._channelHasRoom = true;
|
|
210
216
|
channel.on('close', () => this._onChannelClose(channel));
|
|
217
|
+
channel.on('drain', () => this._onChannelDrain());
|
|
211
218
|
this._settingUp = Promise.all(this._setups.map((setupFn) =>
|
|
212
219
|
// TODO: Use a timeout here to guard against setupFns that never resolve?
|
|
213
220
|
pb.call(setupFn, this, channel).catch((err) => {
|
|
@@ -224,13 +231,6 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
224
231
|
// Can happen if channel closes while we're setting up.
|
|
225
232
|
return;
|
|
226
233
|
}
|
|
227
|
-
if (this._unconfirmedMessages.length > 0) {
|
|
228
|
-
// requeue any messages that were left unconfirmed when connection was lost
|
|
229
|
-
let message;
|
|
230
|
-
while ((message = this._unconfirmedMessages.shift())) {
|
|
231
|
-
this._messages.push(message);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
234
|
// Since we just connected, publish any queued messages
|
|
235
235
|
this._startWorker();
|
|
236
236
|
this.emit('connect');
|
|
@@ -248,6 +248,11 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
248
248
|
}
|
|
249
249
|
// Wait for another reconnect to create a new channel.
|
|
250
250
|
}
|
|
251
|
+
/** Called whenever the channel drains. */
|
|
252
|
+
_onChannelDrain() {
|
|
253
|
+
this._channelHasRoom = true;
|
|
254
|
+
this._startWorker();
|
|
255
|
+
}
|
|
251
256
|
// Called whenever we disconnect from the AMQP server.
|
|
252
257
|
_onDisconnect(ex) {
|
|
253
258
|
this._irrecoverableCode = ex.err instanceof Error ? ex.err.code : undefined;
|
|
@@ -285,7 +290,7 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
285
290
|
});
|
|
286
291
|
}
|
|
287
292
|
_shouldPublish() {
|
|
288
|
-
return this._messages.length > 0 && !this._settingUp && !!this._channel;
|
|
293
|
+
return (this._messages.length > 0 && !this._settingUp && !!this._channel && this._channelHasRoom);
|
|
289
294
|
}
|
|
290
295
|
// Start publishing queued messages, if there isn't already a worker doing this.
|
|
291
296
|
_startWorker() {
|
|
@@ -299,6 +304,44 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
299
304
|
_canWaitReconnection() {
|
|
300
305
|
return !this._irrecoverableCode || !IRRECOVERABLE_ERRORS.includes(this._irrecoverableCode);
|
|
301
306
|
}
|
|
307
|
+
_messageResolved(message, result) {
|
|
308
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
309
|
+
message.resolve(result);
|
|
310
|
+
}
|
|
311
|
+
_messageRejected(message, err) {
|
|
312
|
+
if (!this._channel && this._canWaitReconnection()) {
|
|
313
|
+
// Tried to write to a closed channel. Leave the message in the queue and we'll try again when
|
|
314
|
+
// we reconnect.
|
|
315
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
316
|
+
this._messages.push(message);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
// Something went wrong trying to send this message - could be JSON.stringify failed, could be
|
|
320
|
+
// the broker rejected the message. Either way, reject it back
|
|
321
|
+
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
322
|
+
message.reject(err);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
_getEncodedMessage(content) {
|
|
326
|
+
let encodedMessage;
|
|
327
|
+
if (this._json) {
|
|
328
|
+
encodedMessage = Buffer.from(JSON.stringify(content));
|
|
329
|
+
}
|
|
330
|
+
else if (typeof content === 'string') {
|
|
331
|
+
encodedMessage = Buffer.from(content);
|
|
332
|
+
}
|
|
333
|
+
else if (content instanceof Buffer) {
|
|
334
|
+
encodedMessage = content;
|
|
335
|
+
}
|
|
336
|
+
else if (typeof content === 'object' && typeof content.toString === 'function') {
|
|
337
|
+
encodedMessage = Buffer.from(content.toString());
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
console.warn('amqp-connection-manager: Sending JSON message, but json option not speicifed');
|
|
341
|
+
encodedMessage = Buffer.from(JSON.stringify(content));
|
|
342
|
+
}
|
|
343
|
+
return encodedMessage;
|
|
344
|
+
}
|
|
302
345
|
_publishQueuedMessages(workerNumber) {
|
|
303
346
|
const channel = this._channel;
|
|
304
347
|
if (!channel ||
|
|
@@ -309,88 +352,57 @@ export default class ChannelWrapper extends EventEmitter {
|
|
|
309
352
|
this._working = false;
|
|
310
353
|
return;
|
|
311
354
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (
|
|
319
|
-
|
|
320
|
-
}
|
|
321
|
-
else if (typeof message.content === 'string') {
|
|
322
|
-
encodedMessage = Buffer.from(message.content);
|
|
323
|
-
}
|
|
324
|
-
else if (message.content instanceof Buffer) {
|
|
325
|
-
encodedMessage = message.content;
|
|
326
|
-
}
|
|
327
|
-
else if (typeof message.content === 'object' &&
|
|
328
|
-
typeof message.content.toString === 'function') {
|
|
329
|
-
encodedMessage = Buffer.from(message.content.toString());
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
throw new Error('Invalid message content');
|
|
355
|
+
try {
|
|
356
|
+
// Send messages in batches of 1000 - don't want to starve the event loop.
|
|
357
|
+
let sendsLeft = MAX_MESSAGES_PER_BATCH;
|
|
358
|
+
while (this._channelHasRoom && this._messages.length > 0 && sendsLeft > 0) {
|
|
359
|
+
sendsLeft--;
|
|
360
|
+
const message = this._messages.shift();
|
|
361
|
+
if (!message) {
|
|
362
|
+
break;
|
|
333
363
|
}
|
|
334
|
-
|
|
335
|
-
const
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
case 'sendToQueue':
|
|
349
|
-
return new Promise(function (resolve, reject) {
|
|
350
|
-
result = channel.sendToQueue(message.queue, encodedMessage, message.options, (err) => {
|
|
351
|
-
if (err) {
|
|
352
|
-
reject(err);
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
setImmediate(() => resolve(result));
|
|
356
|
-
}
|
|
357
|
-
});
|
|
358
|
-
});
|
|
359
|
-
/* istanbul ignore next */
|
|
360
|
-
default:
|
|
361
|
-
throw new Error(`Unhandled message type ${message.type}`);
|
|
364
|
+
this._unconfirmedMessages.push(message);
|
|
365
|
+
const encodedMessage = this._getEncodedMessage(message.content);
|
|
366
|
+
switch (message.type) {
|
|
367
|
+
case 'publish': {
|
|
368
|
+
let thisCanSend = true;
|
|
369
|
+
thisCanSend = this._channelHasRoom = channel.publish(message.exchange, message.routingKey, encodedMessage, message.options, (err) => {
|
|
370
|
+
if (err) {
|
|
371
|
+
this._messageRejected(message, err);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
this._messageResolved(message, thisCanSend);
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
break;
|
|
362
378
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
// we reconnect.
|
|
379
|
-
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
380
|
-
this._messages.push(message);
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
// Something went wrong trying to send this message - could be JSON.stringify failed, could be
|
|
384
|
-
// the broker rejected the message. Either way, reject it back
|
|
385
|
-
removeUnconfirmedMessage(this._unconfirmedMessages, message);
|
|
386
|
-
message.reject(err);
|
|
379
|
+
case 'sendToQueue': {
|
|
380
|
+
let thisCanSend = true;
|
|
381
|
+
thisCanSend = this._channelHasRoom = channel.sendToQueue(message.queue, encodedMessage, message.options, (err) => {
|
|
382
|
+
if (err) {
|
|
383
|
+
this._messageRejected(message, err);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
this._messageResolved(message, thisCanSend);
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
/* istanbul ignore next */
|
|
392
|
+
default:
|
|
393
|
+
throw new Error(`Unhandled message type ${message.type}`);
|
|
387
394
|
}
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
this.
|
|
392
|
-
|
|
393
|
-
|
|
395
|
+
}
|
|
396
|
+
// If we didn't send all the messages, send some more...
|
|
397
|
+
if (this._channelHasRoom && this._messages.length > 0) {
|
|
398
|
+
setImmediate(() => this._publishQueuedMessages(workerNumber));
|
|
399
|
+
}
|
|
400
|
+
this._working = false;
|
|
401
|
+
/* istanbul ignore next */
|
|
402
|
+
}
|
|
403
|
+
catch (err) {
|
|
404
|
+
this._working = false;
|
|
405
|
+
this.emit('error', err);
|
|
394
406
|
}
|
|
395
407
|
}
|
|
396
408
|
/** Send an `ack` to the underlying channel. */
|
|
@@ -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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"}
|