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



尝试使用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方法下面介绍了可选参数,如可见性超时和延迟

最新更新