我想讓我的聽衆聽到隊列後只有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