【问题标题】:Control consumption rate of RabbitMQ consumer using amqplib for Node.JS使用 amqplib for Node.JS 控制 RabbitMQ 消费者的消费率
【发布时间】:2014-07-12 02:46:08
【问题描述】:

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

有什么方法可以控制消耗率,这样我就可以确保工作人员接收消息的速度不会超过消耗它们的速度?消息并不重要,所以我不介意它们要排队多久才能被工作人员处理。

我将 amqplib 用于 Node.JS,这是我用于工作人员的代码:

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);

【问题讨论】:

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


    【解决方案1】:

    听起来你在 consume 函数中寻找 prefetch_count

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2013-10-10
      相关资源
      最近更新 更多