使用RabbitMQ进行节点-极限并行处理

问题描述 投票:0回答:1

我有一个RabbitMQ队列,有时可能会保存大量数据要处理。

据我了解,即使channel.consume达到其RAM限制(并最终崩溃),也将尝试将其强制进入Node程序。

确保工人只能处理尽可能多的任务的最佳方法是什么?

我正在考虑将[转换]流链与channel.get(仅获得一条消息)一起使用。如果第一流的缓冲区已满,我们将停止接收消息。

node.js rabbitmq nodejs-stream
1个回答
0
投票

我相信您要指定consumer prefetch。这向RabbitMQ指示应立即“推送”给消费者多少条消息。

提供示例here

channel.prefetch(1);

将提供的最小值,并应确保节点程序的内存消耗最少。

这是基于您的描述,如果我的理解是正确的,我还建议重命名您的问题(并行处理将更多地与单个队列上的多个使用者相关,而不是单个使用者获得所有消息)

© www.soinside.com 2019 - 2024. All rights reserved.