amqplib 0.9.1 → 0.10.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/CHANGELOG.md +23 -0
- package/channel_api.js +3 -3
- package/examples/tutorials/receive_logs_direct.js +1 -2
- package/examples/tutorials/receive_logs_topic.js +1 -2
- package/examples/tutorials/rpc_client.js +0 -1
- package/lib/callback_model.js +0 -1
- package/lib/channel_model.js +38 -35
- package/lib/connect.js +2 -2
- package/lib/connection.js +10 -2
- package/package.json +1 -2
- package/test/channel.js +6 -8
- package/test/channel_api.js +36 -36
- package/test/util.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Change log for amqplib
|
|
2
2
|
|
|
3
|
+
## Changes in v0.10.2
|
|
4
|
+
|
|
5
|
+
git log v0.10.1..v0.10.2
|
|
6
|
+
|
|
7
|
+
- Use Buffer.allocUnsafe when sending messages to improve performance ([PR
|
|
8
|
+
695](https://github.com/amqp-node/amqplib/pull/695), thank you
|
|
9
|
+
@chkimes and @Uzlopak)
|
|
10
|
+
|
|
11
|
+
## Changes in v0.10.1
|
|
12
|
+
|
|
13
|
+
git log v0.10.0..v0.10.1
|
|
14
|
+
|
|
15
|
+
* Allow servername to be specified via socket options as discussed in as discussed in
|
|
16
|
+
[issue 697](https://github.com/squaremo/amqp.node/issues/697)
|
|
17
|
+
|
|
18
|
+
## Changes in v0.10.0
|
|
19
|
+
|
|
20
|
+
git log v0.9.1..v0.10.0
|
|
21
|
+
|
|
22
|
+
* Use Native promises ([PR
|
|
23
|
+
689](https://github.com/amqp-node/amqplib/pull/689), thank you
|
|
24
|
+
@mohd-akram and @kibertoad)
|
|
25
|
+
|
|
3
26
|
## Changes in v0.9.1
|
|
4
27
|
|
|
5
28
|
git log v0.9.0..v0.9.1
|
package/channel_api.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var raw_connect = require('./lib/connect').connect;
|
|
2
2
|
var ChannelModel = require('./lib/channel_model').ChannelModel;
|
|
3
|
-
var
|
|
3
|
+
var promisify = require('util').promisify;
|
|
4
4
|
|
|
5
5
|
function connect(url, connOptions) {
|
|
6
|
-
return
|
|
6
|
+
return promisify(function(cb) {
|
|
7
7
|
return raw_connect(url, connOptions, cb);
|
|
8
|
-
})
|
|
8
|
+
})()
|
|
9
9
|
.then(function(conn) {
|
|
10
10
|
return new ChannelModel(conn);
|
|
11
11
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
var amqp = require('amqplib');
|
|
4
|
-
var all = require('bluebird').all;
|
|
5
4
|
var basename = require('path').basename;
|
|
6
5
|
|
|
7
6
|
var severities = process.argv.slice(2);
|
|
@@ -24,7 +23,7 @@ amqp.connect('amqp://localhost').then(function(conn) {
|
|
|
24
23
|
|
|
25
24
|
ok = ok.then(function(qok) {
|
|
26
25
|
var queue = qok.queue;
|
|
27
|
-
return all(severities.map(function(sev) {
|
|
26
|
+
return Promise.all(severities.map(function(sev) {
|
|
28
27
|
ch.bindQueue(queue, ex, sev);
|
|
29
28
|
})).then(function() { return queue; });
|
|
30
29
|
});
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var amqp = require('amqplib');
|
|
4
4
|
var basename = require('path').basename;
|
|
5
|
-
var all = require('bluebird').all;
|
|
6
5
|
|
|
7
6
|
var keys = process.argv.slice(2);
|
|
8
7
|
if (keys.length < 1) {
|
|
@@ -23,7 +22,7 @@ amqp.connect('amqp://localhost').then(function(conn) {
|
|
|
23
22
|
|
|
24
23
|
ok = ok.then(function(qok) {
|
|
25
24
|
var queue = qok.queue;
|
|
26
|
-
return all(keys.map(function(rk) {
|
|
25
|
+
return Promise.all(keys.map(function(rk) {
|
|
27
26
|
ch.bindQueue(queue, ex, rk);
|
|
28
27
|
})).then(function() { return queue; });
|
|
29
28
|
});
|
package/lib/callback_model.js
CHANGED
package/lib/channel_model.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
'use strict';
|
|
6
6
|
|
|
7
7
|
const EventEmitter = require('events');
|
|
8
|
-
const
|
|
8
|
+
const promisify = require('util').promisify;
|
|
9
9
|
const defs = require('./defs');
|
|
10
10
|
const {BaseChannel} = require('./channel');
|
|
11
11
|
const {acceptMessage} = require('./channel');
|
|
@@ -23,7 +23,7 @@ class ChannelModel extends EventEmitter {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
close() {
|
|
26
|
-
return
|
|
26
|
+
return promisify(this.connection.close.bind(this.connection))();
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
async createChannel() {
|
|
@@ -53,27 +53,25 @@ class Channel extends BaseChannel {
|
|
|
53
53
|
// response's fields; this is intended to be suitable for implementing
|
|
54
54
|
// API procedures.
|
|
55
55
|
async rpc(method, fields, expect) {
|
|
56
|
-
const f = await
|
|
56
|
+
const f = await promisify(cb => {
|
|
57
57
|
return this._rpc(method, fields, expect, cb);
|
|
58
|
-
})
|
|
58
|
+
})();
|
|
59
59
|
|
|
60
60
|
return f.fields;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
// Do the remarkably simple channel open handshake
|
|
64
|
-
open() {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
defs.ChannelOpenOk);
|
|
69
|
-
});
|
|
64
|
+
async open() {
|
|
65
|
+
const ch = await this.allocate.bind(this)();
|
|
66
|
+
return ch.rpc(defs.ChannelOpen, {outOfBand: ""},
|
|
67
|
+
defs.ChannelOpenOk);
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
close() {
|
|
73
|
-
return
|
|
71
|
+
return promisify(cb => {
|
|
74
72
|
return this.closeBecause("Goodbye", defs.constants.REPLY_SUCCESS,
|
|
75
73
|
cb);
|
|
76
|
-
});
|
|
74
|
+
})();
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
// === Public API, declaring queues and stuff ===
|
|
@@ -162,21 +160,21 @@ class Channel extends BaseChannel {
|
|
|
162
160
|
// NB we want the callback to be run synchronously, so that we've
|
|
163
161
|
// registered the consumerTag before any messages can arrive.
|
|
164
162
|
const fields = Args.consume(queue, options);
|
|
165
|
-
return Promise
|
|
166
|
-
this._rpc(defs.BasicConsume, fields, defs.BasicConsumeOk,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
163
|
+
return new Promise((resolve, reject) => {
|
|
164
|
+
this._rpc(defs.BasicConsume, fields, defs.BasicConsumeOk, (err, ok) => {
|
|
165
|
+
if (err) return reject(err);
|
|
166
|
+
this.registerConsumer(ok.fields.consumerTag, callback);
|
|
167
|
+
resolve(ok.fields);
|
|
168
|
+
});
|
|
171
169
|
});
|
|
172
170
|
}
|
|
173
171
|
|
|
174
172
|
async cancel(consumerTag) {
|
|
175
|
-
const ok = await
|
|
173
|
+
const ok = await promisify(cb => {
|
|
176
174
|
this._rpc(defs.BasicCancel, Args.cancel(consumerTag),
|
|
177
175
|
defs.BasicCancelOk,
|
|
178
176
|
cb);
|
|
179
|
-
})
|
|
177
|
+
})()
|
|
180
178
|
.then(ok => {
|
|
181
179
|
this.unregisterConsumer(consumerTag);
|
|
182
180
|
return ok.fields;
|
|
@@ -185,25 +183,23 @@ class Channel extends BaseChannel {
|
|
|
185
183
|
|
|
186
184
|
get(queue, options) {
|
|
187
185
|
const fields = Args.get(queue, options);
|
|
188
|
-
return Promise
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const fields = f.fields;
|
|
197
|
-
return new Promise(resolve => {
|
|
186
|
+
return new Promise((resolve, reject) => {
|
|
187
|
+
this.sendOrEnqueue(defs.BasicGet, fields, (err, f) => {
|
|
188
|
+
if (err) return reject(err);
|
|
189
|
+
if (f.id === defs.BasicGetEmpty) {
|
|
190
|
+
return resolve(false);
|
|
191
|
+
}
|
|
192
|
+
else if (f.id === defs.BasicGetOk) {
|
|
193
|
+
const fields = f.fields;
|
|
198
194
|
this.handleMessage = acceptMessage(m => {
|
|
199
195
|
m.fields = fields;
|
|
200
196
|
resolve(m);
|
|
201
197
|
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
reject(new Error(`Unexpected response to BasicGet: ${inspect(f)}`));
|
|
201
|
+
}
|
|
202
|
+
});
|
|
207
203
|
});
|
|
208
204
|
}
|
|
209
205
|
|
|
@@ -290,6 +286,13 @@ class ConfirmChannel extends Channel {
|
|
|
290
286
|
awaiting.push(confirmed);
|
|
291
287
|
}
|
|
292
288
|
});
|
|
289
|
+
// Channel closed
|
|
290
|
+
if (!this.pending) {
|
|
291
|
+
var cb;
|
|
292
|
+
while (cb = this.unconfirmed.shift()) {
|
|
293
|
+
if (cb) cb(new Error('channel closed'));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
293
296
|
return Promise.all(awaiting);
|
|
294
297
|
}
|
|
295
298
|
}
|
package/lib/connect.js
CHANGED
|
@@ -106,7 +106,7 @@ function connect(url, socketOptions, openCallback) {
|
|
|
106
106
|
if (typeof url === 'object') {
|
|
107
107
|
protocol = (url.protocol || 'amqp') + ':';
|
|
108
108
|
sockopts.host = url.hostname;
|
|
109
|
-
sockopts.servername = url.hostname;
|
|
109
|
+
sockopts.servername = sockopts.servername || url.hostname;
|
|
110
110
|
sockopts.port = url.port || ((protocol === 'amqp:') ? 5672 : 5671);
|
|
111
111
|
|
|
112
112
|
var user, pass;
|
|
@@ -131,7 +131,7 @@ function connect(url, socketOptions, openCallback) {
|
|
|
131
131
|
var parts = URL(url, true); // yes, parse the query string
|
|
132
132
|
protocol = parts.protocol;
|
|
133
133
|
sockopts.host = parts.hostname;
|
|
134
|
-
sockopts.servername = parts.hostname;
|
|
134
|
+
sockopts.servername = sockopts.servername || parts.hostname;
|
|
135
135
|
sockopts.port = parseInt(parts.port) || ((protocol === 'amqp:') ? 5672 : 5671);
|
|
136
136
|
var vhost = parts.pathname ? parts.pathname.substr(1) : null;
|
|
137
137
|
fields = openFrames(vhost, parts.query, sockopts.credentials || credentialsFromUrl(parts), extraClientProperties);
|
package/lib/connection.js
CHANGED
|
@@ -560,7 +560,11 @@ C.sendMessage = function(channel,
|
|
|
560
560
|
var allLen = methodHeaderLen + bodyLen;
|
|
561
561
|
|
|
562
562
|
if (allLen < SINGLE_CHUNK_THRESHOLD) {
|
|
563
|
-
|
|
563
|
+
// Use `allocUnsafe` to avoid excessive allocations and CPU usage
|
|
564
|
+
// from zeroing. The returned Buffer is not zeroed and so must be
|
|
565
|
+
// completely filled to be used safely.
|
|
566
|
+
// See https://github.com/amqp-node/amqplib/pull/695
|
|
567
|
+
var all = Buffer.allocUnsafe(allLen);
|
|
564
568
|
var offset = mframe.copy(all, 0);
|
|
565
569
|
offset += pframe.copy(all, offset);
|
|
566
570
|
|
|
@@ -570,7 +574,11 @@ C.sendMessage = function(channel,
|
|
|
570
574
|
}
|
|
571
575
|
else {
|
|
572
576
|
if (methodHeaderLen < SINGLE_CHUNK_THRESHOLD) {
|
|
573
|
-
|
|
577
|
+
// Use `allocUnsafe` to avoid excessive allocations and CPU usage
|
|
578
|
+
// from zeroing. The returned Buffer is not zeroed and so must be
|
|
579
|
+
// completely filled to be used safely.
|
|
580
|
+
// See https://github.com/amqp-node/amqplib/pull/695
|
|
581
|
+
var both = Buffer.allocUnsafe(methodHeaderLen);
|
|
574
582
|
var offset = mframe.copy(both, 0);
|
|
575
583
|
pframe.copy(both, offset);
|
|
576
584
|
buffer.write(both);
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "amqplib",
|
|
3
3
|
"homepage": "http://amqp-node.github.io/amqplib/",
|
|
4
4
|
"main": "./channel_api.js",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.10.2",
|
|
6
6
|
"description": "An AMQP 0-9-1 (e.g., RabbitMQ) library and client.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"bitsyntax": "~0.1.0",
|
|
16
|
-
"bluebird": "^3.7.2",
|
|
17
16
|
"buffer-more-ints": "~1.0.0",
|
|
18
17
|
"readable-stream": "1.x >=1.1.9",
|
|
19
18
|
"url-parse": "~1.5.10"
|
package/test/channel.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
5
|
var assert = require('assert');
|
|
6
|
-
var
|
|
6
|
+
var promisify = require('util').promisify;
|
|
7
7
|
var Channel = require('../lib/channel').Channel;
|
|
8
8
|
var Connection = require('../lib/connection').Connection;
|
|
9
9
|
var util = require('./util');
|
|
@@ -76,12 +76,10 @@ var DELIVER_FIELDS = {
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
function open(ch) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
});
|
|
79
|
+
ch.allocate();
|
|
80
|
+
return promisify(function(cb) {
|
|
81
|
+
ch._rpc(defs.ChannelOpen, {outOfBand: ''}, defs.ChannelOpenOk, cb);
|
|
82
|
+
})();
|
|
85
83
|
}
|
|
86
84
|
|
|
87
85
|
suite("channel open and close", function() {
|
|
@@ -285,7 +283,7 @@ test("RPC on closed channel", channelTest(
|
|
|
285
283
|
failureCb(resolve, reject));
|
|
286
284
|
});
|
|
287
285
|
|
|
288
|
-
Promise.
|
|
286
|
+
Promise.all([close, fail1, fail2])
|
|
289
287
|
.then(succeed(done))
|
|
290
288
|
.catch(fail(done));
|
|
291
289
|
},
|
package/test/channel_api.js
CHANGED
|
@@ -6,7 +6,7 @@ var util = require('./util');
|
|
|
6
6
|
var succeed = util.succeed, fail = util.fail;
|
|
7
7
|
var schedule = util.schedule;
|
|
8
8
|
var randomString = util.randomString;
|
|
9
|
-
var
|
|
9
|
+
var promisify = require('util').promisify;
|
|
10
10
|
|
|
11
11
|
var URL = process.env.URL || 'amqp://localhost';
|
|
12
12
|
|
|
@@ -118,9 +118,9 @@ chtest("channel break on publishing to non-exchange", function(ch) {
|
|
|
118
118
|
|
|
119
119
|
chtest("delete queue", function(ch) {
|
|
120
120
|
var q = 'test.delete-queue';
|
|
121
|
-
return Promise.
|
|
121
|
+
return Promise.all([
|
|
122
122
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
123
|
-
ch.checkQueue(q))
|
|
123
|
+
ch.checkQueue(q)])
|
|
124
124
|
.then(function() {
|
|
125
125
|
return ch.deleteQueue(q);})
|
|
126
126
|
.then(function() {
|
|
@@ -129,9 +129,9 @@ chtest("delete queue", function(ch) {
|
|
|
129
129
|
|
|
130
130
|
chtest("delete exchange", function(ch) {
|
|
131
131
|
var ex = 'test.delete-exchange';
|
|
132
|
-
return Promise.
|
|
132
|
+
return Promise.all([
|
|
133
133
|
ch.assertExchange(ex, 'fanout', EX_OPTS),
|
|
134
|
-
ch.checkExchange(ex))
|
|
134
|
+
ch.checkExchange(ex)])
|
|
135
135
|
.then(function() {
|
|
136
136
|
return ch.deleteExchange(ex);})
|
|
137
137
|
.then(function() {
|
|
@@ -177,7 +177,7 @@ suite("sendMessage", function() {
|
|
|
177
177
|
chtest("send to queue and get from queue", function(ch) {
|
|
178
178
|
var q = 'test.send-to-q';
|
|
179
179
|
var msg = randomString();
|
|
180
|
-
return Promise.
|
|
180
|
+
return Promise.all([ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q)])
|
|
181
181
|
.then(function() {
|
|
182
182
|
ch.sendToQueue(q, Buffer.from(msg));
|
|
183
183
|
return waitForMessages(q);
|
|
@@ -194,9 +194,9 @@ chtest("send to queue and get from queue", function(ch) {
|
|
|
194
194
|
chtest("send (and get) zero content to queue", function(ch) {
|
|
195
195
|
var q = 'test.send-to-q';
|
|
196
196
|
var msg = Buffer.alloc(0);
|
|
197
|
-
return Promise.
|
|
197
|
+
return Promise.all([
|
|
198
198
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
199
|
-
ch.purgeQueue(q))
|
|
199
|
+
ch.purgeQueue(q)])
|
|
200
200
|
.then(function() {
|
|
201
201
|
ch.sendToQueue(q, msg);
|
|
202
202
|
return waitForMessages(q);})
|
|
@@ -218,11 +218,11 @@ chtest("route message", function(ch) {
|
|
|
218
218
|
var q = 'test.route-message-q';
|
|
219
219
|
var msg = randomString();
|
|
220
220
|
|
|
221
|
-
return Promise.
|
|
221
|
+
return Promise.all([
|
|
222
222
|
ch.assertExchange(ex, 'fanout', EX_OPTS),
|
|
223
223
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
224
224
|
ch.purgeQueue(q),
|
|
225
|
-
ch.bindQueue(q, ex, '', {}))
|
|
225
|
+
ch.bindQueue(q, ex, '', {})])
|
|
226
226
|
.then(function() {
|
|
227
227
|
ch.publish(ex, '', Buffer.from(msg));
|
|
228
228
|
return waitForMessages(q);})
|
|
@@ -256,11 +256,11 @@ chtest("unbind queue", function(ch) {
|
|
|
256
256
|
var viabinding = randomString();
|
|
257
257
|
var direct = randomString();
|
|
258
258
|
|
|
259
|
-
return Promise.
|
|
259
|
+
return Promise.all([
|
|
260
260
|
ch.assertExchange(ex, 'fanout', EX_OPTS),
|
|
261
261
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
262
262
|
ch.purgeQueue(q),
|
|
263
|
-
ch.bindQueue(q, ex, '', {}))
|
|
263
|
+
ch.bindQueue(q, ex, '', {})])
|
|
264
264
|
.then(function() {
|
|
265
265
|
ch.publish(ex, '', Buffer.from('foobar'));
|
|
266
266
|
return waitForMessages(q);})
|
|
@@ -289,14 +289,14 @@ chtest("consume via exchange-exchange binding", function(ch) {
|
|
|
289
289
|
var ex1 = 'test.ex-ex-binding1', ex2 = 'test.ex-ex-binding2';
|
|
290
290
|
var q = 'test.ex-ex-binding-q';
|
|
291
291
|
var rk = 'test.routing.key', msg = randomString();
|
|
292
|
-
return Promise.
|
|
292
|
+
return Promise.all([
|
|
293
293
|
ch.assertExchange(ex1, 'direct', EX_OPTS),
|
|
294
294
|
ch.assertExchange(ex2, 'fanout',
|
|
295
295
|
{durable: false, internal: true}),
|
|
296
296
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
297
297
|
ch.purgeQueue(q),
|
|
298
298
|
ch.bindExchange(ex2, ex1, rk, {}),
|
|
299
|
-
ch.bindQueue(q, ex2, '', {}))
|
|
299
|
+
ch.bindQueue(q, ex2, '', {})])
|
|
300
300
|
.then(function() {
|
|
301
301
|
return new Promise(function(resolve, reject) {
|
|
302
302
|
function delivery(m) {
|
|
@@ -319,13 +319,13 @@ chtest("unbind exchange", function(ch) {
|
|
|
319
319
|
var viabinding = randomString();
|
|
320
320
|
var direct = randomString();
|
|
321
321
|
|
|
322
|
-
return Promise.
|
|
322
|
+
return Promise.all([
|
|
323
323
|
ch.assertExchange(source, 'fanout', EX_OPTS),
|
|
324
324
|
ch.assertExchange(dest, 'fanout', EX_OPTS),
|
|
325
325
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
326
326
|
ch.purgeQueue(q),
|
|
327
327
|
ch.bindExchange(dest, source, '', {}),
|
|
328
|
-
ch.bindQueue(q, dest, '', {}))
|
|
328
|
+
ch.bindQueue(q, dest, '', {})])
|
|
329
329
|
.then(function() {
|
|
330
330
|
ch.publish(source, '', Buffer.from('foobar'));
|
|
331
331
|
return waitForMessages(q);})
|
|
@@ -353,7 +353,7 @@ chtest("cancel consumer", function(ch) {
|
|
|
353
353
|
var q = 'test.consumer-cancel';
|
|
354
354
|
var ctag;
|
|
355
355
|
var recv1 = new Promise(function (resolve, reject) {
|
|
356
|
-
Promise.
|
|
356
|
+
Promise.all([
|
|
357
357
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
358
358
|
ch.purgeQueue(q),
|
|
359
359
|
// My callback is 'resolve the promise in `arrived`'
|
|
@@ -361,17 +361,17 @@ chtest("cancel consumer", function(ch) {
|
|
|
361
361
|
.then(function(ok) {
|
|
362
362
|
ctag = ok.consumerTag;
|
|
363
363
|
ch.sendToQueue(q, Buffer.from('foo'));
|
|
364
|
-
}));
|
|
364
|
+
})]);
|
|
365
365
|
});
|
|
366
366
|
|
|
367
367
|
// A message should arrive because of the consume
|
|
368
368
|
return recv1.then(function() {
|
|
369
|
-
var recv2 = Promise.
|
|
369
|
+
var recv2 = Promise.all([
|
|
370
370
|
ch.cancel(ctag).then(function() {
|
|
371
371
|
return ch.sendToQueue(q, Buffer.from('bar'));
|
|
372
372
|
}),
|
|
373
373
|
// but check a message did arrive in the queue
|
|
374
|
-
waitForMessages(q))
|
|
374
|
+
waitForMessages(q)])
|
|
375
375
|
.then(function() {
|
|
376
376
|
return ch.get(q, {noAck:true});
|
|
377
377
|
})
|
|
@@ -390,13 +390,13 @@ chtest("cancel consumer", function(ch) {
|
|
|
390
390
|
chtest("cancelled consumer", function(ch) {
|
|
391
391
|
var q = 'test.cancelled-consumer';
|
|
392
392
|
return new Promise(function(resolve, reject) {
|
|
393
|
-
return Promise.
|
|
393
|
+
return Promise.all([
|
|
394
394
|
ch.assertQueue(q),
|
|
395
395
|
ch.purgeQueue(q),
|
|
396
396
|
ch.consume(q, function(msg) {
|
|
397
397
|
if (msg === null) resolve();
|
|
398
398
|
else reject(new Error('Message not expected'));
|
|
399
|
-
}))
|
|
399
|
+
})])
|
|
400
400
|
.then(function() {
|
|
401
401
|
return ch.deleteQueue(q);
|
|
402
402
|
});
|
|
@@ -408,9 +408,9 @@ chtest("ack", function(ch) {
|
|
|
408
408
|
var q = 'test.ack';
|
|
409
409
|
var msg1 = randomString(), msg2 = randomString();
|
|
410
410
|
|
|
411
|
-
return Promise.
|
|
411
|
+
return Promise.all([
|
|
412
412
|
ch.assertQueue(q, QUEUE_OPTS),
|
|
413
|
-
ch.purgeQueue(q))
|
|
413
|
+
ch.purgeQueue(q)])
|
|
414
414
|
.then(function() {
|
|
415
415
|
ch.sendToQueue(q, Buffer.from(msg1));
|
|
416
416
|
ch.sendToQueue(q, Buffer.from(msg2));
|
|
@@ -438,8 +438,8 @@ chtest("nack", function(ch) {
|
|
|
438
438
|
var q = 'test.nack';
|
|
439
439
|
var msg1 = randomString();
|
|
440
440
|
|
|
441
|
-
return Promise.
|
|
442
|
-
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q))
|
|
441
|
+
return Promise.all([
|
|
442
|
+
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q)])
|
|
443
443
|
.then(function() {
|
|
444
444
|
ch.sendToQueue(q, Buffer.from(msg1));
|
|
445
445
|
return waitForMessages(q);})
|
|
@@ -463,8 +463,8 @@ chtest("reject", function(ch) {
|
|
|
463
463
|
var q = 'test.reject';
|
|
464
464
|
var msg1 = randomString();
|
|
465
465
|
|
|
466
|
-
return Promise.
|
|
467
|
-
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q))
|
|
466
|
+
return Promise.all([
|
|
467
|
+
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q)])
|
|
468
468
|
.then(function() {
|
|
469
469
|
ch.sendToQueue(q, Buffer.from(msg1));
|
|
470
470
|
return waitForMessages(q);})
|
|
@@ -484,9 +484,9 @@ chtest("reject", function(ch) {
|
|
|
484
484
|
|
|
485
485
|
chtest("prefetch", function(ch) {
|
|
486
486
|
var q = 'test.prefetch';
|
|
487
|
-
return Promise.
|
|
487
|
+
return Promise.all([
|
|
488
488
|
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q),
|
|
489
|
-
ch.prefetch(1))
|
|
489
|
+
ch.prefetch(1)])
|
|
490
490
|
.then(function() {
|
|
491
491
|
ch.sendToQueue(q, Buffer.from('foobar'));
|
|
492
492
|
ch.sendToQueue(q, Buffer.from('foobar'));
|
|
@@ -523,8 +523,8 @@ suite("confirms", function() {
|
|
|
523
523
|
|
|
524
524
|
confirmtest('message is confirmed', function(ch) {
|
|
525
525
|
var q = 'test.confirm-message';
|
|
526
|
-
return Promise.
|
|
527
|
-
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q))
|
|
526
|
+
return Promise.all([
|
|
527
|
+
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q)])
|
|
528
528
|
.then(function() {
|
|
529
529
|
return ch.sendToQueue(q, Buffer.from('bleep'));
|
|
530
530
|
});
|
|
@@ -537,8 +537,8 @@ confirmtest('message is confirmed', function(ch) {
|
|
|
537
537
|
// multi-ack.
|
|
538
538
|
confirmtest('multiple confirms', function(ch) {
|
|
539
539
|
var q = 'test.multiple-confirms';
|
|
540
|
-
return Promise.
|
|
541
|
-
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q))
|
|
540
|
+
return Promise.all([
|
|
541
|
+
ch.assertQueue(q, QUEUE_OPTS), ch.purgeQueue(q)])
|
|
542
542
|
.then(function() {
|
|
543
543
|
var multipleRainbows = false;
|
|
544
544
|
ch.on('ack', function(a) {
|
|
@@ -549,9 +549,9 @@ confirmtest('multiple confirms', function(ch) {
|
|
|
549
549
|
var cs = [];
|
|
550
550
|
|
|
551
551
|
function sendAndPushPromise() {
|
|
552
|
-
var conf =
|
|
552
|
+
var conf = promisify(function(cb) {
|
|
553
553
|
return ch.sendToQueue(q, Buffer.from('bleep'), {}, cb);
|
|
554
|
-
});
|
|
554
|
+
})();
|
|
555
555
|
cs.push(conf);
|
|
556
556
|
}
|
|
557
557
|
|