使用 amqplib for Node.JS 控制 RabbitMQ 消费者的消费率
Posted
技术标签:
【中文标题】使用 amqplib for Node.JS 控制 RabbitMQ 消费者的消费率【英文标题】:Control consumption rate of RabbitMQ consumer using amqplib for Node.JS 【发布时间】: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);
【问题讨论】:
【参考方案1】:听起来你在 consume
函数中寻找 prefetch_count
。
欲了解更多信息,请访问: http://www.rabbitmq.com/consumer-prefetch.html
【讨论】:
以上是关于使用 amqplib for Node.JS 控制 RabbitMQ 消费者的消费率的主要内容,如果未能解决你的问题,请参考以下文章
使用php-amqplib连接rabbitMQ 学习笔记及总结
Node.js 中 For 循环中的 async.waterfall
Node.js 中 For 循环中的 async.waterfall