使用amqplib控制Node.JS,控制RabbitMQ使用者的使用率

我的应用程序使用RabbitMQ队列来存储消息,然后我有一个工作人员消费这些消息,并将其插入到数据库中。 目的不是强调工作负载高峰期的数据库。 我遇到的问题是,在那些高峰期,队列的发布率真的很高,工作人员每秒钟开始接收的消息比它能处理的时间多,直到它崩溃。

有什么办法来控制消费率,所以我可以确保工人收不到消息比消耗更快? 信息并不重要,所以我不介意他们有多less时间入队,直到工作人员能够处理。

我使用的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); 

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

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