尝试使用rsmq worker在node.js应用程序中实现队列处理器(https://github.com/mpneuried/rsmq-worker)。必须运行多个工作程序才能并行处理消息。
我们如何设置多个工人?
探索使用-https://github.com/Automattic/kue#parallel-使用集群进行处理
只需创建指向同一队列的多个RSMQWorker实例。
示例:
var workers = [];
for (let i = 0; i < NUMBER_OF_WORKERS; i++) {
workers[i] = createWorker(i);
}
function createWorker(i) {
const worker = new RSMQWorker(QUEUE_NAME, {...});
worker.on("message", processMessage)
return worker;
}
然后,您可以使用rsmq工作程序的自动启动选项或手动启动它们:
for (let i = 0; i < workers.length; i++) {
workers[i].start();
}
使用这种方法,您将使用一个Node.js实例并行处理多条消息。如果您的消息处理逻辑涉及一些I/O,它可以提高性能。
为了获得更高级别的并行性,您可以在Node.js的多个实例中运行上述代码,如其他答案中所述。
您只需启动多个工作进程,它们就会开始并行处理消息。RSMQ声明,它保证消息只传递一次,因此只有一个工作进程将处理单个消息。
看看RSMQ自述文件,https://github.com/smrchy/rsmq.注意:
保证在消息可见性超时。
请查看createQueue和receiveMessage方法下面介绍了可选参数,如可见性超时和延迟