RabbitMQ – 并行任务消耗

我使用RabbitMQ从symfony发送消息到nodeJs。我会说要求并行处理。

根据客户要处理的数据量,每个客户端的工作可能需要5分钟到70分钟才能完成。 客户可以随机发布工作要求。

假设5个客户完成各自的工作所需的时间如下所示

客户端1作业-65分钟客户端2作业 – 10分钟客户端3作业 – 5分钟客户端4作业 – 10分钟客户端5作业 – 20分钟正常队列有一个问题,因为客户端1的工作将花费65分钟完成,因此客户端2必须等待75分钟(65 + 10)完成一项需要10分钟的工作。

我知道,在RabbitMQ中,我可以创造许多工人来处理这项工作,但是根据工作所需的时间和工作的位置,客户可能需要很长时间才能完成工作。

所以我正在寻找创build每个客户端的dynamic消费者。 每个消费者都为每个客户单独完成这项工作。

Rabbitmq有可能吗? 如果是的话,怎样才能做到呢?

在这里输入图像描述

您应该在Rabbit MQ教程中查看关于Fair dispatch的部分。

它演示如何使用$channel->basic_qos(null, 1, null); 一次只能处理一项工作。 所以你有一个公平的消息分配。