繁体   English   中英

Redis队列的多个node.js消息接收器

[英]Multiple node.js message receivers for a redis queue

尝试使用rsmq-worker( https://github.com/mpneuried/rsmq-worker )在node.js应用程序中实现队列处理器。 必须运行多个工作程序来并行处理消息。

我们如何设置多名工人?

探索使用-https: //github.com/Automattic/kue#parallel-processing-with-cluster

只需创建指向同一队列的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-worker的自动启动选项或手动启动它们:

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方法,以了解可选参数,例如可见性超时和延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM