首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RabbitMQ使用nodeJS删除使用者

使用RabbitMQ使用nodeJS删除使用者
EN

Stack Overflow用户
提问于 2016-06-08 07:31:28
回答 1查看 2.6K关注 0票数 4

我试着让我的听者在我想要立即删除我的消费者之后,只听一条消息。我怎样才能做到这一点。这是密码。

代码语言:javascript
复制
  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;
  }

在上面的队列中,是它将要侦听的队列,timeOut表示侦听器侦听的时间。如果它侦听了一条消息,我想停止listening.And以便进一步侦听,下次我将调用函数queueListner。虽然我已经制作了conn.close(),但是在UI中它仍然显示了使用者。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 14:32:53

不要使用consume。如果只需要获得一条消息,请使用get方法

get

代码语言:javascript
复制
ch.get("queue-name").then(messageHandlerFunction)

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37695995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档