var amqp=require('amqp');
var conn=amqp.createConnection({/**/});
conn.on('ready',function() {
console.log('Server Connected');
conn.exchange('order',options={type:'topic'},function(exchange) {
console.log('Exchange connected');
conn.queue('order-consumer',function(queue) {
queue.bind(exchange,'');
console.log('Queue Connected');
queue.subscribe({ack:true},function(msg) {
//conn.end();
console.log(msg);
});
});
});
});注意,conn.end()被注释掉了。经过大量的研究,我仍然不明白为什么这里需要它。虽然它创造了魔力,但每次连接都会结束,并且在每次消息后都必须再次连接到服务器。
AMQP是这样设计的吗?或者这是node-amqp实现的问题?
发布于 2015-04-14 02:34:29
正如fine manual所说的:
将options参数设置为{ ack: true } (缺省为false)将使
服务器一次只发送一条消息。当您需要下一条消息时,调用
q.shift()。
你不能给queue.shift()打电话
queue.subscribe({ ack : true }, function(msg) {
console.log(msg);
queue.shift(); // <-- necessary
});https://stackoverflow.com/questions/29611869
复制相似问题