@droidsolutions-oss/amqp-ts 3.0.4 → 4.0.0-develop.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.
Files changed (48) hide show
  1. package/README.md +186 -45
  2. package/lib/AmqpProperties.js +1 -2
  3. package/lib/Binding.d.ts +36 -6
  4. package/lib/Binding.js +244 -75
  5. package/lib/Binding.js.map +1 -1
  6. package/lib/Connection/Connection.d.ts +87 -46
  7. package/lib/Connection/Connection.js +360 -181
  8. package/lib/Connection/Connection.js.map +1 -1
  9. package/lib/Connection/ConnectionMetrics.js +1 -2
  10. package/lib/Connection/RecoveryOptions.d.ts +6 -0
  11. package/lib/Connection/RecoveryOptions.js +2 -0
  12. package/lib/Connection/RecoveryOptions.js.map +1 -0
  13. package/lib/Connection/Topology.d.ts +1 -1
  14. package/lib/Connection/Topology.js +1 -2
  15. package/lib/Deferred.d.ts +18 -0
  16. package/lib/Deferred.js +33 -0
  17. package/lib/Deferred.js.map +1 -0
  18. package/lib/Exchange/DeclarationOptions.js +1 -2
  19. package/lib/Exchange/Exchange.d.ts +38 -17
  20. package/lib/Exchange/Exchange.js +204 -159
  21. package/lib/Exchange/Exchange.js.map +1 -1
  22. package/lib/Exchange/ExchangeType.js +1 -2
  23. package/lib/Exchange/InitializeResult.js +1 -2
  24. package/lib/LoggerFactory.js +1 -5
  25. package/lib/LoggerFactory.js.map +1 -1
  26. package/lib/Message.d.ts +11 -10
  27. package/lib/Message.js +66 -37
  28. package/lib/Message.js.map +1 -1
  29. package/lib/Queue/DeclarationOptions.js +1 -2
  30. package/lib/Queue/DeleteResult.js +1 -2
  31. package/lib/Queue/InitializeResult.js +1 -2
  32. package/lib/Queue/Queue.d.ts +87 -26
  33. package/lib/Queue/Queue.js +440 -207
  34. package/lib/Queue/Queue.js.map +1 -1
  35. package/lib/Queue/StartConsumerResult.js +1 -2
  36. package/lib/amqp-ts.d.ts +0 -1
  37. package/lib/amqp-ts.js +2 -7
  38. package/lib/amqp-ts.js.map +1 -1
  39. package/lib/errorMessage.d.ts +1 -0
  40. package/lib/errorMessage.js +18 -0
  41. package/lib/errorMessage.js.map +1 -0
  42. package/lib/index.d.ts +19 -14
  43. package/lib/index.js +7 -13
  44. package/lib/index.js.map +1 -1
  45. package/package.json +38 -60
  46. package/lib/Connection/ReconnectStrategy.d.ts +0 -4
  47. package/lib/Connection/ReconnectStrategy.js +0 -3
  48. package/lib/Connection/ReconnectStrategy.js.map +0 -1
@@ -1,14 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exchange = void 0;
4
- const os = require("os");
5
- const amqp_ts_1 = require("../amqp-ts");
6
- const Binding_1 = require("../Binding");
7
- const Message_1 = require("../Message");
1
+ import * as os from "node:os";
2
+ import { ApplicationName } from "../amqp-ts.js";
3
+ import { Binding } from "../Binding.js";
4
+ import { Deferred } from "../Deferred.js";
8
5
  /**
9
6
  * Represents an exchange.
10
7
  */
11
- class Exchange {
8
+ export class Exchange {
9
+ connection;
10
+ options;
11
+ /**
12
+ * A promise that resolves once the exchange is initialized. It is replaced by a pending promise while the exchange
13
+ * is re-initialized after a lost connection or a closed channel. It rejects when the exchange fails on its own, or
14
+ * when the connection is closed or recovery gives up while it is pending.
15
+ */
16
+ initialized;
17
+ /**
18
+ * The underlying AMQP channel.
19
+ * @internal
20
+ */
21
+ _channel;
12
22
  /** Gets the name of the exchange. */
13
23
  get name() {
14
24
  return this._name;
@@ -17,6 +27,23 @@ class Exchange {
17
27
  get type() {
18
28
  return this._type;
19
29
  }
30
+ _name;
31
+ _type;
32
+ _deleting;
33
+ _closing;
34
+ log;
35
+ _deferred;
36
+ /** The generation of the last initialization, and that initialization. */
37
+ _generation;
38
+ _initializing = Promise.resolve();
39
+ /** Changes with every initialization, so a superseded one can tell. */
40
+ _attempt = 0;
41
+ /** The channel the exchange was successfully declared on. */
42
+ _readyChannel;
43
+ /** Why the exchange failed on its own, after which it is no longer declared. */
44
+ _failure;
45
+ /** Settles {@link _initializedChanged} for those waiting on it. */
46
+ _changed;
20
47
  /**
21
48
  * Initializes a new instance of the @see Exchange class.
22
49
  *
@@ -30,52 +57,161 @@ class Exchange {
30
57
  constructor(connection, name, type, options = {}) {
31
58
  this.connection = connection;
32
59
  this.options = options;
33
- this._consumer_handlers = new Array();
34
- this._isConsumerInitializedRcp = false;
35
60
  this.log = this.connection.loggerFactory(this.constructor, { exchange: name });
36
61
  this._name = name;
37
62
  this._type = type;
38
- this._initialize();
63
+ this._deferred = this.connection._createDeferred();
64
+ this.initialized = this._deferred.promise;
65
+ this.connection._exchanges[this._name] = this;
66
+ this.connection._forgetFailure(this);
67
+ // while disconnected the next connect initializes it
68
+ if (this.connection._model) {
69
+ this._initialize(this.connection._model, this.connection._generation).catch(() => { });
70
+ }
71
+ }
72
+ /**
73
+ * Creates a channel on the given model and declares the exchange on it, then settles {@link initialized}. Does
74
+ * nothing if the exchange was already initialized for the given generation.
75
+ * @internal
76
+ */
77
+ _initialize(model, generation) {
78
+ if (this.connection._exchanges[this._name] !== this) {
79
+ // failed, closed or deleted: only a new declaration brings it back
80
+ return Promise.reject(this._failure ?? new Error(`Exchange '${this._name}' is no longer declared`));
81
+ }
82
+ if (this._generation !== generation) {
83
+ this._generation = generation;
84
+ this._initializing = this._declare(model, ++this._attempt);
85
+ }
86
+ return this._initializing;
39
87
  }
40
88
  /**
41
- * Initializes the exchange and resolves the @see initialized promise once the initialization is complete.
89
+ * Replaces a settled {@link initialized} with a pending one, until the exchange is initialized again.
90
+ * @internal
42
91
  */
43
- _initialize() {
44
- this.initialized = new Promise((resolve, reject) => {
45
- this.connection.initialized
46
- .then(() => {
47
- this.connection.connection.createChannel((createChannelError, channel) => {
48
- /* istanbul ignore if */
49
- if (createChannelError) {
50
- reject(createChannelError);
51
- }
52
- else {
53
- this._channel = channel;
54
- const callback = (err, ok) => {
55
- /* istanbul ignore if */
56
- if (err) {
57
- this.log.error({ err }, "Failed to create exchange '%s'.", this._name);
58
- delete this.connection._exchanges[this._name];
59
- reject(err);
60
- }
61
- else {
62
- resolve(ok);
63
- }
64
- };
65
- if (this.options.noCreate) {
66
- this._channel.checkExchange(this._name, callback);
67
- }
68
- else {
69
- this._channel.assertExchange(this._name, this._type, this.options, callback);
70
- }
71
- }
72
- });
73
- })
74
- .catch((err) => {
75
- this.log.warn({ err }, "Channel failure, error caused during connection!");
92
+ _invalidate() {
93
+ this._readyChannel = undefined;
94
+ if (this._deferred.settled) {
95
+ this._deferred = this.connection._createDeferred();
96
+ this.initialized = this._deferred.promise;
97
+ this._notifyChanged();
98
+ }
99
+ }
100
+ /**
101
+ * Whether the exchange or its connection is closed or deleted on purpose, so nothing initializes it again.
102
+ * @internal
103
+ */
104
+ get _isClosedOnPurpose() {
105
+ return this._closing !== undefined || this._deleting !== undefined || this.connection._isStopped;
106
+ }
107
+ /**
108
+ * Resolves once {@link initialized} is no longer the given promise, or once nothing will replace it any more
109
+ * because the exchange or its connection is closed or deleted. Used by a send whose channel turned out to be closing.
110
+ * @internal
111
+ */
112
+ _initializedChanged(ready) {
113
+ if (this.initialized !== ready || this._isClosedOnPurpose) {
114
+ return Promise.resolve();
115
+ }
116
+ this._changed ??= new Deferred();
117
+ return this._changed.promise;
118
+ }
119
+ /**
120
+ * Wakes up whoever waits in {@link _initializedChanged}.
121
+ * @internal
122
+ */
123
+ _notifyChanged() {
124
+ const changed = this._changed;
125
+ this._changed = undefined;
126
+ changed?.resolve();
127
+ }
128
+ /**
129
+ * Rejects {@link initialized} if it is still pending. Used when the connection is closed or recovery gave up.
130
+ * @internal
131
+ */
132
+ _rejectPending(err) {
133
+ if (!this._deferred.settled) {
134
+ this._deferred.reject(err);
135
+ }
136
+ }
137
+ /**
138
+ * Re-creates the channel after it closed while the connection stayed up, declares the exchange again and restores
139
+ * its bindings, which a broker-side delete removes as well. Only then {@link initialized} resolves, so a message
140
+ * sent after that is routed again.
141
+ */
142
+ _reinitialize(model, generation) {
143
+ this._generation = generation;
144
+ this._initializing = this._declare(model, ++this._attempt, true);
145
+ return this._initializing;
146
+ }
147
+ async _declare(model, attempt, rebind = false) {
148
+ try {
149
+ const channel = await model.createChannel();
150
+ channel.on("error", (err) => {
151
+ this.log.warn({ err }, "Channel of exchange '%s' failed: %s", this._name, err.message);
76
152
  });
153
+ channel.on("close", () => this._onChannelClose(channel, model));
154
+ if (attempt !== this._attempt) {
155
+ await channel.close().catch(() => { });
156
+ return;
157
+ }
158
+ this._channel = channel;
159
+ const ok = this.options.noCreate
160
+ ? await channel.checkExchange(this._name)
161
+ : await channel.assertExchange(this._name, this._type, this.options);
162
+ if (attempt !== this._attempt) {
163
+ await channel.close().catch(() => { });
164
+ return;
165
+ }
166
+ this._readyChannel = channel;
167
+ if (rebind) {
168
+ await Binding._rebindContaining(this, model);
169
+ if (attempt !== this._attempt) {
170
+ return;
171
+ }
172
+ }
173
+ // a reply and the connection's close can arrive together: never resolve on a closed connection
174
+ if (this.connection._isModelClosed(model)) {
175
+ throw new Error("Connection closed while the exchange was initialized");
176
+ }
177
+ this._deferred.resolve(ok);
178
+ }
179
+ catch (err) {
180
+ if (attempt !== this._attempt) {
181
+ return;
182
+ }
183
+ if (this.connection._isModelClosed(model)) {
184
+ // the next connect initializes it again, until then initialized stays pending
185
+ this.log.debug({ err }, "Connection lost while initializing exchange '%s'.", this._name);
186
+ throw err;
187
+ }
188
+ this.log.error({ err }, "Failed to create exchange '%s'.", this._name);
189
+ delete this.connection._exchanges[this._name];
190
+ this._failure = err;
191
+ this._deferred.reject(err);
192
+ this.connection._onEntityFailed(this, err);
193
+ throw err;
194
+ }
195
+ }
196
+ /**
197
+ * A channel that closes while the connection stays up (for example after a publish to an exchange that was deleted
198
+ * on the broker) is re-created and the exchange declared again. Closes during a failed declaration, on a lost
199
+ * connection or caused by {@link close} or {@link delete} are left alone.
200
+ */
201
+ _onChannelClose(channel, model) {
202
+ if (channel !== this._readyChannel || this._closing !== undefined || this._deleting !== undefined) {
203
+ return;
204
+ }
205
+ const generation = this._generation;
206
+ this._invalidate();
207
+ // the connection emits its own close right after closing its channels, so look at it once that happened
208
+ queueMicrotask(() => {
209
+ if (!this.connection._isModelUsable(model) || this._generation !== generation) {
210
+ return;
211
+ }
212
+ this.log.warn("Channel of exchange '%s' closed, re-initializing it.", this._name);
213
+ this._reinitialize(model, generation).catch(() => { });
77
214
  });
78
- this.connection._exchanges[this._name] = this;
79
215
  }
80
216
  /**
81
217
  * Directly sends a message to this exchange.
@@ -86,94 +222,19 @@ class Exchange {
86
222
  send(message, routingKey = "") {
87
223
  message.sendTo(this, routingKey);
88
224
  }
89
- rpc(requestParameters, routingKey = "", callback) {
90
- return new Promise((resolve, reject) => {
91
- function generateUuid() {
92
- return Math.random().toString() + Math.random().toString() + Math.random().toString();
93
- }
94
- const processRpc = () => {
95
- const uuid = generateUuid();
96
- if (!this._isConsumerInitializedRcp) {
97
- this._isConsumerInitializedRcp = true;
98
- this._channel.consume(amqp_ts_1.DIRECT_REPLY_TO_QUEUE, (resultMsg) => {
99
- const result = new Message_1.Message(resultMsg.content, resultMsg.properties);
100
- result.fields = resultMsg.fields;
101
- for (const handler of this._consumer_handlers) {
102
- if (handler[0] === resultMsg.properties.correlationId) {
103
- const func = handler[1];
104
- func.apply("", [undefined, result]);
105
- }
106
- }
107
- resolve(result);
108
- }, { noAck: true }, (err, _ok) => {
109
- /* istanbul ignore if */
110
- if (err) {
111
- reject(new Error("amqp-ts: Queue.rpc error: " + err.message));
112
- }
113
- else {
114
- if (callback) {
115
- // send the rpc request
116
- this._consumer_handlers.push([uuid, callback]);
117
- }
118
- // consumerTag = ok.consumerTag;
119
- const message = new Message_1.Message(requestParameters, {
120
- correlationId: uuid,
121
- replyTo: amqp_ts_1.DIRECT_REPLY_TO_QUEUE,
122
- });
123
- message.sendTo(this, routingKey);
124
- }
125
- });
126
- }
127
- else {
128
- this._consumer_handlers.push([uuid, callback]);
129
- const message = new Message_1.Message(requestParameters, {
130
- correlationId: uuid,
131
- replyTo: amqp_ts_1.DIRECT_REPLY_TO_QUEUE,
132
- });
133
- message.sendTo(this, routingKey);
134
- resolve(message);
135
- }
136
- };
137
- this.initialized.then(processRpc);
138
- });
139
- }
140
225
  /**
141
226
  * Removes any bindings of this exchange, deletes the exchange and then closes the channel.
142
227
  */
143
228
  delete() {
144
229
  if (this._deleting === undefined) {
145
- this._deleting = new Promise((resolve, reject) => {
146
- this.initialized
147
- .then(() => {
148
- return Binding_1.Binding.removeBindingsContaining(this);
149
- })
150
- .then(() => {
151
- this._channel.deleteExchange(this._name, {}, (deleteExchangeError, _ok) => {
152
- /* istanbul ignore if */
153
- if (deleteExchangeError) {
154
- reject(deleteExchangeError);
155
- }
156
- else {
157
- this._channel.close((channelCloseError) => {
158
- delete this.initialized; // invalidate exchange
159
- delete this.connection._exchanges[this._name]; // remove the exchange from our administration
160
- /* istanbul ignore if */
161
- if (channelCloseError) {
162
- reject(channelCloseError);
163
- }
164
- else {
165
- delete this._channel;
166
- delete this.connection;
167
- resolve(null);
168
- }
169
- });
170
- }
171
- });
172
- })
173
- .catch((err) => {
174
- reject(err);
175
- });
176
- });
230
+ this._deleting = (async () => {
231
+ this._notifyChanged();
232
+ await this.initialized;
233
+ await Binding.removeBindingsContaining(this);
234
+ await this._channel.deleteExchange(this._name, {});
235
+ delete this.connection._exchanges[this._name]; // remove the exchange from our administration
236
+ await this._channel.close();
237
+ })();
177
238
  }
178
239
  return this._deleting;
179
240
  }
@@ -182,30 +243,13 @@ class Exchange {
182
243
  */
183
244
  close() {
184
245
  if (this._closing === undefined) {
185
- this._closing = new Promise((resolve, reject) => {
186
- this.initialized
187
- .then(() => {
188
- return Binding_1.Binding.removeBindingsContaining(this);
189
- })
190
- .then(() => {
191
- delete this.initialized; // invalidate exchange
192
- delete this.connection._exchanges[this._name]; // remove the exchange from our administration
193
- this._channel.close((err) => {
194
- /* istanbul ignore if */
195
- if (err) {
196
- reject(err);
197
- }
198
- else {
199
- delete this._channel;
200
- delete this.connection;
201
- resolve(null);
202
- }
203
- });
204
- })
205
- .catch((err) => {
206
- reject(err);
207
- });
208
- });
246
+ this._closing = (async () => {
247
+ this._notifyChanged();
248
+ await this.initialized;
249
+ await Binding.removeBindingsContaining(this);
250
+ delete this.connection._exchanges[this._name]; // remove the exchange from our administration
251
+ await this._channel.close();
252
+ })();
209
253
  }
210
254
  return this._closing;
211
255
  }
@@ -218,22 +262,24 @@ class Exchange {
218
262
  * @returns A promise that resolves when the binding is initialized.
219
263
  */
220
264
  bind(source, pattern = "", args = {}) {
221
- const binding = new Binding_1.Binding(this, source, pattern, args);
265
+ const binding = new Binding(this, source, pattern, args);
222
266
  return binding.initialized;
223
267
  }
224
268
  /**
225
- * Unbinds the given exchange from the connection.
269
+ * Unbinds this exchange from the given source exchange by deleting the binding. Resolves right away if there is no
270
+ * such binding, for example because it was unbound before.
226
271
  *
227
272
  * @param source The exchange to unbind from.
228
273
  * @param pattern The pattern.
229
274
  * @param _args Any addtional arguments.
230
275
  */
231
- unbind(source, pattern = "", _args = {}) {
232
- return this.connection._bindings[Binding_1.Binding.id(this, source, pattern)].delete();
276
+ async unbind(source, pattern = "", _args = {}) {
277
+ // a binding that does not exist (any more) has nothing to delete
278
+ await this.connection._bindings[Binding.id(this, source, pattern)]?.delete();
233
279
  }
234
280
  /** Returns a string containing the name of the exchange, the name of the host and the process ID. */
235
281
  consumerQueueName() {
236
- return `${this._name}.${amqp_ts_1.ApplicationName}.${os.hostname()}.${process.pid}`;
282
+ return `${this._name}.${ApplicationName}.${os.hostname()}.${process.pid}`;
237
283
  }
238
284
  /**
239
285
  * Declares a queue, binds it to this exchange and activates the given consumer handler on the queue. The name of the
@@ -274,5 +320,4 @@ class Exchange {
274
320
  }
275
321
  }
276
322
  }
277
- exports.Exchange = Exchange;
278
323
  //# sourceMappingURL=Exchange.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Exchange.js","sourceRoot":"","sources":["../../src/Exchange/Exchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Exchange.js","sourceRoot":"","sources":["../../src/Exchange/Exchange.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=ExchangeType.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=InitializeResult.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmtpyLogger = void 0;
4
- class EmtpyLogger {
1
+ export class EmtpyLogger {
5
2
  trace(_obj, _msg, ..._args) { }
6
3
  debug(_obj, _msg, ..._args) { }
7
4
  info(_obj, _msg, ..._args) { }
@@ -9,5 +6,4 @@ class EmtpyLogger {
9
6
  error(_obj, _msg, ..._args) { }
10
7
  fatal(_obj, _msg, ..._args) { }
11
8
  }
12
- exports.EmtpyLogger = EmtpyLogger;
13
9
  //# sourceMappingURL=LoggerFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoggerFactory.js","sourceRoot":"","sources":["../src/LoggerFactory.ts"],"names":[],"mappings":";;;AAyCA,MAAa,WAAW;IACtB,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,IAAI,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACrF,IAAI,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACrF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;CACvF;AAPD,kCAOC"}
1
+ {"version":3,"file":"LoggerFactory.js","sourceRoot":"","sources":["../src/LoggerFactory.ts"],"names":[],"mappings":"AAyCA,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,IAAI,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACrF,IAAI,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACrF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;IACtF,KAAK,CAAC,IAAsC,EAAE,IAAa,EAAE,GAAG,KAAY,IAAS,CAAC;CACvF"}
package/lib/Message.d.ts CHANGED
@@ -1,16 +1,11 @@
1
- import * as AmqpLib from "amqplib/callback_api";
2
- import { AmqpProperties } from "./AmqpProperties";
3
- import { Exchange } from "./Exchange/Exchange";
4
- import { Queue } from "./Queue/Queue";
1
+ import { AmqpProperties } from "./AmqpProperties.js";
2
+ import { Exchange } from "./Exchange/Exchange.js";
3
+ import { Queue } from "./Queue/Queue.js";
5
4
  /**
6
5
  * Represents a message that can be send via AMQP.
7
6
  */
8
7
  export declare class Message {
9
8
  fields: any;
10
- /** for received messages only: the channel it has been received on */
11
- _channel: AmqpLib.Channel;
12
- /** received messages only: original amqplib message */
13
- _message: AmqpLib.Message;
14
9
  /** Additional AQMP properties of the message. */
15
10
  properties: AmqpProperties;
16
11
  /** The original contant of the message. */
@@ -37,13 +32,19 @@ export declare class Message {
37
32
  */
38
33
  getJsonContent<T>(): T;
39
34
  /**
40
- * Tries to publish the message on the destination channel. Appends the current @see properties object and the
41
- * @see content of the message.
35
+ * Publishes the message on the destination's channel once the destination is initialized. Appends the current
36
+ * @see properties object and the @see content of the message.
37
+ *
38
+ * If the channel turns out to be closed or closing (the connection or the channel was lost, or amqplib is closing
39
+ * the connection after a protocol error), the message is published again once the destination is initialized
40
+ * again. A message that can never be published (the destination failed or was closed or deleted, recovery gave up
41
+ * or the connection was closed) is logged at warn level and dropped.
42
42
  *
43
43
  * @param destination The destination of the message.
44
44
  * @param routingKey An optional routing key.
45
45
  */
46
46
  sendTo(destination: Exchange | Queue, routingKey?: string): void;
47
+ private _publish;
47
48
  ack(allUpTo?: boolean): void;
48
49
  nack(allUpTo?: boolean, requeue?: boolean): void;
49
50
  reject(requeue?: boolean): void;