我想让我的听众听到队列后只有1消息我想立即删除我的消费者。我怎样才能做到这一点。 这里是代码。删除消费者在RabbitMQ与nodeJS
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;
}
在上述
队列
是将监听的队列和超时表示多久我的听众会听。 如果它侦听一条消息,我想停止监听。并且为了进一步侦听,我将在下次调用函数queueListner。 虽然我做了conn.close()
,但在用户界面上它仍然显示消费者。
你可以请访问https://groups.google.com/forum/#!forum/rabbitmq-users上的RabbitMQ用户组,查看发布说明以了解修正的错误(如果您使用的是旧版本) – mjn
我已经询问https://groups.google.com/forum/#!topic/rabbitmq-users/VlSKlfSWT7g 但如果有人有解决方案,请分享。 – vkstack