使用nodeJS移除RabbitMQ中的使用者

我试图让我的听众在我想要立即删除我的消费者之后只收听1条消息。 我怎么能做到这一点。 这里是代码。

queueListener:function(Queue,timeOut){ var deferred=sails.promise.defer(),timer,data; sails.amqp.connect('amqp://localhost', function(err, conn) { conn.createConfirmChannel(function(err, ch) { if(err){ conn.close(); deferred.reject(err); }else{ ch.assertQueue(Queue, {durable: true}); ch.prefetch(1); ch.consume(Queue,function(msg){ data=msg.content.toString(); clearTimeout(timer); ch.ack(msg); setTimeout(function(){ conn.close(); deferred.resolve(data); },0); },{noAck: false}); } }); timer=setTimeout(function(){ conn.close(); deferred.reject(new Error("Nothing in the Queue.")); },timeOut-5); }); return deferred.promise; } 

在上面的Queue中是它将要监听的队列,timeOut代表了我的监听器将要监听的时间。 如果它侦听一条消息,我想停止listen.And进一步侦听,我将下一次调用函数queueListner 。 虽然我做了conn.close()但在用户界面,它仍然显示消费者。 在这里输入图像描述

不要使用consume 。 如果您只需要获取单个消息,请使用get方法

http://www.squaremobius.net/amqp.node/channel_api.html#channel_get

 ch.get("queue-name").then(messageHandlerFunction) 

这将从指定的队列中检索单个消息,并通过指定的消息处理函数运行它