使用amqplib为Node.JS控制RabbitMQ使用者的消耗率

时间:2014-05-22 21:31:34

标签: node.js rabbitmq message-queue amqp node-amqp

我的应用程序使用RabbitMQ队列来存储消息,然后我有一个工作人员使用这些消息并将它们插入数据库中。目的不是在工作负载峰值中强调数据库。我遇到的问题是,在那些峰值中,队列的发布率非常高,并且工作人员开始每秒接收的消息数超过崩溃时可以处理的消息。

有没有办法控制消费率,这样我可以确保工作人员没有比消费消费更快地接收消息?消息并不重要,所以我不介意在工人处理消息之前他们会留多少时间。

我正在为Node.JS使用amqplib,这是我正在为工作人员使用的代码:

open.then(function(conn) {
  var ok = conn.createChannel();
  ok = ok.then(function(ch) {
    ch.assertQueue(q);
    ch.consume(q, function(msg) {
      if (msg !== null) {
        message = JSON.parse(msg.content.toString());
        processMessage(message);
      }
    }, {noAck: true});
  });
  return ok;
}).then(null, console.warn);

1 个答案:

答案 0 :(得分:2)

听起来您正在寻找prefetch_count函数中的consume

欲了解更多信息,请访问: http://www.rabbitmq.com/consumer-prefetch.html