amqplib 0.4.1 → 0.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/CHANGELOG.md +51 -0
- package/Makefile +1 -1
- package/README.md +26 -17
- package/callback_api.js +1 -0
- package/channel_api.js +7 -6
- package/examples/headers.js +2 -2
- package/examples/receive_generator.js +39 -0
- package/examples/send_generators.js +42 -0
- package/examples/ssl.js +1 -1
- package/examples/tutorials/README.md +1 -1
- package/examples/tutorials/callback_api/emit_log.js +1 -1
- package/examples/tutorials/callback_api/emit_log_direct.js +1 -1
- package/examples/tutorials/callback_api/emit_log_topic.js +1 -1
- package/examples/tutorials/callback_api/new_task.js +1 -1
- package/examples/tutorials/callback_api/rpc_client.js +1 -1
- package/examples/tutorials/callback_api/rpc_server.js +1 -1
- package/examples/tutorials/callback_api/send.js +1 -1
- package/examples/tutorials/emit_log.js +4 -5
- package/examples/tutorials/emit_log_direct.js +4 -5
- package/examples/tutorials/emit_log_topic.js +4 -5
- package/examples/tutorials/new_task.js +5 -6
- package/examples/tutorials/package.json +2 -3
- package/examples/tutorials/receive.js +4 -4
- package/examples/tutorials/receive_logs.js +1 -1
- package/examples/tutorials/receive_logs_direct.js +2 -2
- package/examples/tutorials/receive_logs_topic.js +6 -6
- package/examples/tutorials/rpc_client.js +25 -26
- package/examples/tutorials/rpc_server.js +2 -2
- package/examples/tutorials/send.js +10 -6
- package/examples/tutorials/worker.js +1 -1
- package/examples/waitForConfirms.js +2 -2
- package/lib/callback_model.js +13 -12
- package/lib/channel.js +2 -2
- package/lib/channel_model.js +58 -66
- package/lib/codec.js +64 -38
- package/lib/connect.js +33 -12
- package/lib/connection.js +7 -6
- package/lib/credentials.js +6 -3
- package/lib/defs.js +75 -75
- package/lib/frame.js +2 -1
- package/lib/heartbeat.js +1 -1
- package/package.json +4 -3
- package/test/callback_api.js +6 -5
- package/test/channel.js +52 -46
- package/test/channel_api.js +125 -136
- package/test/codec.js +48 -9
- package/test/connect.js +63 -3
- package/test/connection.js +10 -9
- package/test/data.js +32 -9
- package/test/frame.js +4 -4
- package/test/util.js +33 -19
- package/.npmignore +0 -9
package/package.json
CHANGED
|
@@ -2,20 +2,21 @@
|
|
|
2
2
|
"name": "amqplib",
|
|
3
3
|
"homepage": "http://squaremo.github.io/amqp.node/",
|
|
4
4
|
"main": "./channel_api.js",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.5.2",
|
|
6
6
|
"description": "An AMQP 0-9-1 (e.g., RabbitMQ) library and client.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/squaremo/amqp.node.git"
|
|
10
10
|
},
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=0.8
|
|
12
|
+
"node": ">=0.8 <=9"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"bitsyntax": "~0.0.4",
|
|
16
|
+
"bluebird": "^3.4.6",
|
|
16
17
|
"buffer-more-ints": "0.0.2",
|
|
17
18
|
"readable-stream": "1.x >=1.1.9",
|
|
18
|
-
"
|
|
19
|
+
"safe-buffer": "^5.0.1"
|
|
19
20
|
},
|
|
20
21
|
"devDependencies": {
|
|
21
22
|
"mocha": "~1",
|
package/test/callback_api.js
CHANGED
|
@@ -8,6 +8,7 @@ var schedule = util.schedule;
|
|
|
8
8
|
var randomString = util.randomString;
|
|
9
9
|
var kCallback = util.kCallback;
|
|
10
10
|
var domain = require('domain');
|
|
11
|
+
var Buffer = require('safe-buffer').Buffer;
|
|
11
12
|
|
|
12
13
|
var URL = process.env.URL || 'amqp://localhost';
|
|
13
14
|
|
|
@@ -159,7 +160,7 @@ channel_test('send to queue and consume noAck', function(ch, done) {
|
|
|
159
160
|
else done(new Error("message content doesn't match:" +
|
|
160
161
|
msg + " =/= " + m.content.toString()));
|
|
161
162
|
}, {noAck: true, exclusive: true});
|
|
162
|
-
ch.sendToQueue(q.queue,
|
|
163
|
+
ch.sendToQueue(q.queue, Buffer.from(msg));
|
|
163
164
|
});
|
|
164
165
|
});
|
|
165
166
|
|
|
@@ -175,7 +176,7 @@ channel_test('send to queue and consume ack', function(ch, done) {
|
|
|
175
176
|
else done(new Error("message content doesn't match:" +
|
|
176
177
|
msg + " =/= " + m.content.toString()));
|
|
177
178
|
}, {noAck: false, exclusive: true});
|
|
178
|
-
ch.sendToQueue(q.queue,
|
|
179
|
+
ch.sendToQueue(q.queue, Buffer.from(msg));
|
|
179
180
|
});
|
|
180
181
|
});
|
|
181
182
|
|
|
@@ -183,7 +184,7 @@ channel_test('send to and get from queue', function(ch, done) {
|
|
|
183
184
|
ch.assertQueue('', {exclusive: true}, function(e, q) {
|
|
184
185
|
if (e != null) return done(e);
|
|
185
186
|
var msg = randomString();
|
|
186
|
-
ch.sendToQueue(q.queue,
|
|
187
|
+
ch.sendToQueue(q.queue, Buffer.from(msg));
|
|
187
188
|
waitForMessages(ch, q.queue, function(e, _) {
|
|
188
189
|
if (e != null) return done(e);
|
|
189
190
|
ch.get(q.queue, {noAck: true}, function(e, m) {
|
|
@@ -210,12 +211,12 @@ confirm_channel_test('Receive confirmation', function(ch, done) {
|
|
|
210
211
|
// An unroutable message, on the basis that you're not allowed a
|
|
211
212
|
// queue with an empty name, and you can't make bindings to the
|
|
212
213
|
// default exchange. Tricky eh?
|
|
213
|
-
ch.publish('', '',
|
|
214
|
+
ch.publish('', '', Buffer.from('foo'), {}, done);
|
|
214
215
|
});
|
|
215
216
|
|
|
216
217
|
confirm_channel_test('Wait for confirms', function(ch, done) {
|
|
217
218
|
for (var i=0; i < 1000; i++) {
|
|
218
|
-
ch.publish('', '',
|
|
219
|
+
ch.publish('', '', Buffer.from('foo'), {});
|
|
219
220
|
}
|
|
220
221
|
ch.waitForConfirms(done);
|
|
221
222
|
});
|
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 Promise = require('bluebird');
|
|
7
7
|
var Channel = require('../lib/channel').Channel;
|
|
8
8
|
var Connection = require('../lib/connection').Connection;
|
|
9
9
|
var util = require('./util');
|
|
@@ -12,6 +12,7 @@ var completes = util.completes;
|
|
|
12
12
|
var defs = require('../lib/defs');
|
|
13
13
|
var conn_handshake = require('./connection').connection_handshake;
|
|
14
14
|
var OPEN_OPTS = require('./connection').OPEN_OPTS;
|
|
15
|
+
var Buffer = require('safe-buffer').Buffer;
|
|
15
16
|
|
|
16
17
|
var LOG_ERRORS = process.env.LOG_ERRORS;
|
|
17
18
|
|
|
@@ -59,7 +60,7 @@ function channel_handshake(send, await) {
|
|
|
59
60
|
return await(defs.ChannelOpen)()
|
|
60
61
|
.then(function(open) {
|
|
61
62
|
assert.notEqual(0, open.channel);
|
|
62
|
-
send(defs.ChannelOpenOk, {channelId:
|
|
63
|
+
send(defs.ChannelOpenOk, {channelId: Buffer.from('')}, open.channel);
|
|
63
64
|
return open.channel;
|
|
64
65
|
});
|
|
65
66
|
}
|
|
@@ -76,14 +77,12 @@ var DELIVER_FIELDS = {
|
|
|
76
77
|
};
|
|
77
78
|
|
|
78
79
|
function open(ch) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
});
|
|
86
|
-
return opened.promise;
|
|
80
|
+
return Promise.try(function() {
|
|
81
|
+
ch.allocate();
|
|
82
|
+
return Promise.fromCallback(function(cb) {
|
|
83
|
+
ch._rpc(defs.ChannelOpen, {outOfBand: ''}, defs.ChannelOpenOk, cb);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
suite("channel open and close", function() {
|
|
@@ -112,10 +111,9 @@ test("open, close", channelTest(
|
|
|
112
111
|
function(ch, done) {
|
|
113
112
|
open(ch)
|
|
114
113
|
.then(function() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return closed.promise;
|
|
114
|
+
return new Promise(function(resolve) {
|
|
115
|
+
ch.closeBecause("Bye", defs.constants.REPLY_SUCCESS, resolve);
|
|
116
|
+
});
|
|
119
117
|
})
|
|
120
118
|
.then(succeed(done), fail(done));
|
|
121
119
|
},
|
|
@@ -204,7 +202,7 @@ test("RPC", channelTest(
|
|
|
204
202
|
prefetchSize: 0,
|
|
205
203
|
global: false
|
|
206
204
|
};
|
|
207
|
-
|
|
205
|
+
|
|
208
206
|
ch._rpc(defs.BasicQos, fields, defs.BasicQosOk, wheeboom);
|
|
209
207
|
ch._rpc(defs.BasicQos, fields, defs.BasicQosOk, wheeboom);
|
|
210
208
|
ch._rpc(defs.BasicQos, fields, defs.BasicQosOk, wheeboom);
|
|
@@ -233,7 +231,7 @@ test("Bad RPC", channelTest(
|
|
|
233
231
|
assert.strictEqual(505, error.code);
|
|
234
232
|
succeed(errLatch)();
|
|
235
233
|
});
|
|
236
|
-
|
|
234
|
+
|
|
237
235
|
open(ch)
|
|
238
236
|
.then(function() {
|
|
239
237
|
ch._rpc(defs.BasicRecover, {requeue: true}, defs.BasicRecoverOk,
|
|
@@ -257,27 +255,34 @@ test("Bad RPC", channelTest(
|
|
|
257
255
|
test("RPC on closed channel", channelTest(
|
|
258
256
|
function(ch, done) {
|
|
259
257
|
open(ch);
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
258
|
+
|
|
259
|
+
var close = new Promise(function(resolve) {
|
|
260
|
+
ch.on('error', function(error) {
|
|
261
|
+
assert.strictEqual(504, error.code);
|
|
262
|
+
resolve();
|
|
263
|
+
});
|
|
264
264
|
});
|
|
265
265
|
|
|
266
|
-
function failureCb(
|
|
266
|
+
function failureCb(resolve, reject) {
|
|
267
267
|
return function(err) {
|
|
268
|
-
if (err !== null)
|
|
269
|
-
else
|
|
268
|
+
if (err !== null) resolve();
|
|
269
|
+
else reject();
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
.
|
|
280
|
-
|
|
273
|
+
var fail1 = new Promise(function(resolve, reject) {
|
|
274
|
+
return ch._rpc(defs.BasicRecover, {requeue:true}, defs.BasicRecoverOk,
|
|
275
|
+
failureCb(resolve, reject));
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
var fail2 = new Promise(function(resolve, reject) {
|
|
279
|
+
return ch._rpc(defs.BasicRecover, {requeue:true}, defs.BasicRecoverOk,
|
|
280
|
+
failureCb(resolve, reject));
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
Promise.join(close, fail1, fail2)
|
|
284
|
+
.then(succeed(done))
|
|
285
|
+
.catch(fail(done));
|
|
281
286
|
},
|
|
282
287
|
function(send, await, done, ch) {
|
|
283
288
|
await(defs.BasicRecover)()
|
|
@@ -289,7 +294,8 @@ test("RPC on closed channel", channelTest(
|
|
|
289
294
|
}, ch);
|
|
290
295
|
return await(defs.ChannelCloseOk);
|
|
291
296
|
})
|
|
292
|
-
.then(succeed(done)
|
|
297
|
+
.then(succeed(done))
|
|
298
|
+
.catch(fail(done));
|
|
293
299
|
}));
|
|
294
300
|
|
|
295
301
|
test("publish all < single chunk threshold", channelTest(
|
|
@@ -299,7 +305,7 @@ test("publish all < single chunk threshold", channelTest(
|
|
|
299
305
|
ch.sendMessage({
|
|
300
306
|
exchange: 'foo', routingKey: 'bar',
|
|
301
307
|
mandatory: false, immediate: false, ticket: 0
|
|
302
|
-
}, {},
|
|
308
|
+
}, {}, Buffer.from('foobar'));
|
|
303
309
|
})
|
|
304
310
|
.then(succeed(done), fail(done));
|
|
305
311
|
},
|
|
@@ -319,7 +325,7 @@ test("publish content > single chunk threshold", channelTest(
|
|
|
319
325
|
ch.sendMessage({
|
|
320
326
|
exchange: 'foo', routingKey: 'bar',
|
|
321
327
|
mandatory: false, immediate: false, ticket: 0
|
|
322
|
-
}, {},
|
|
328
|
+
}, {}, Buffer.alloc(3000));
|
|
323
329
|
}, done);
|
|
324
330
|
},
|
|
325
331
|
function(send, await, done, ch) {
|
|
@@ -339,8 +345,8 @@ test("publish method & headers > threshold", channelTest(
|
|
|
339
345
|
exchange: 'foo', routingKey: 'bar',
|
|
340
346
|
mandatory: false, immediate: false, ticket: 0
|
|
341
347
|
}, {
|
|
342
|
-
headers: {foo:
|
|
343
|
-
},
|
|
348
|
+
headers: {foo: Buffer.alloc(3000)}
|
|
349
|
+
}, Buffer.from('foobar'));
|
|
344
350
|
}, done);
|
|
345
351
|
},
|
|
346
352
|
function(send, await, done, ch) {
|
|
@@ -359,11 +365,11 @@ test("publish zero-length message", channelTest(
|
|
|
359
365
|
ch.sendMessage({
|
|
360
366
|
exchange: 'foo', routingKey: 'bar',
|
|
361
367
|
mandatory: false, immediate: false, ticket: 0
|
|
362
|
-
}, {},
|
|
368
|
+
}, {}, Buffer.alloc(0));
|
|
363
369
|
ch.sendMessage({
|
|
364
370
|
exchange: 'foo', routingKey: 'bar',
|
|
365
371
|
mandatory: false, immediate: false, ticket: 0
|
|
366
|
-
}, {},
|
|
372
|
+
}, {}, Buffer.alloc(0));
|
|
367
373
|
}, done);
|
|
368
374
|
},
|
|
369
375
|
function(send, await, done, ch) {
|
|
@@ -385,7 +391,7 @@ test("delivery", channelTest(
|
|
|
385
391
|
},
|
|
386
392
|
function(send, await, done, ch) {
|
|
387
393
|
completes(function() {
|
|
388
|
-
send(defs.BasicDeliver, DELIVER_FIELDS, ch,
|
|
394
|
+
send(defs.BasicDeliver, DELIVER_FIELDS, ch, Buffer.from('barfoo'));
|
|
389
395
|
}, done);
|
|
390
396
|
}));
|
|
391
397
|
|
|
@@ -394,13 +400,13 @@ test("zero byte msg", channelTest(
|
|
|
394
400
|
open(ch);
|
|
395
401
|
ch.on('delivery', function(m) {
|
|
396
402
|
completes(function() {
|
|
397
|
-
assert.deepEqual(
|
|
403
|
+
assert.deepEqual(Buffer.alloc(0), m.content);
|
|
398
404
|
}, done);
|
|
399
405
|
});
|
|
400
406
|
},
|
|
401
407
|
function(send, await, done, ch) {
|
|
402
408
|
completes(function() {
|
|
403
|
-
send(defs.BasicDeliver, DELIVER_FIELDS, ch,
|
|
409
|
+
send(defs.BasicDeliver, DELIVER_FIELDS, ch, Buffer.from(''));
|
|
404
410
|
}, done);
|
|
405
411
|
}));
|
|
406
412
|
|
|
@@ -447,13 +453,13 @@ test("bad properties send", channelTest(
|
|
|
447
453
|
ch.sendMessage({routingKey: 'foo',
|
|
448
454
|
exchange: 'amq.direct'},
|
|
449
455
|
{contentEncoding: 7},
|
|
450
|
-
|
|
456
|
+
Buffer.from('foobar'));
|
|
451
457
|
});
|
|
452
458
|
}, done);
|
|
453
459
|
},
|
|
454
460
|
function(send, await, done, ch) {
|
|
455
461
|
done();
|
|
456
|
-
}));
|
|
462
|
+
}));
|
|
457
463
|
|
|
458
464
|
test("bad consumer", channelTest(
|
|
459
465
|
function(ch, done) {
|
|
@@ -469,7 +475,7 @@ test("bad consumer", channelTest(
|
|
|
469
475
|
open(ch);
|
|
470
476
|
},
|
|
471
477
|
function(send, await, done, ch) {
|
|
472
|
-
send(defs.BasicDeliver, DELIVER_FIELDS, ch,
|
|
478
|
+
send(defs.BasicDeliver, DELIVER_FIELDS, ch, Buffer.from('barfoo'));
|
|
473
479
|
return await(defs.ChannelClose)()
|
|
474
480
|
.then(function() {
|
|
475
481
|
send(defs.ChannelCloseOk, {}, ch);
|
|
@@ -496,7 +502,7 @@ test("bad send in consumer", channelTest(
|
|
|
496
502
|
function(send, await, done, ch) {
|
|
497
503
|
completes(function() {
|
|
498
504
|
send(defs.BasicDeliver, DELIVER_FIELDS, ch,
|
|
499
|
-
|
|
505
|
+
Buffer.from('barfoo'));
|
|
500
506
|
}, done);
|
|
501
507
|
return await(defs.ChannelClose)()
|
|
502
508
|
.then(function() {
|
|
@@ -515,7 +521,7 @@ test("return", channelTest(
|
|
|
515
521
|
},
|
|
516
522
|
function(send, await, done, ch) {
|
|
517
523
|
completes(function() {
|
|
518
|
-
send(defs.BasicReturn, DELIVER_FIELDS, ch,
|
|
524
|
+
send(defs.BasicReturn, DELIVER_FIELDS, ch, Buffer.from('barfoo'));
|
|
519
525
|
}, done);
|
|
520
526
|
}));
|
|
521
527
|
|