我使用RabbitMQ从symfony向nodeJs发送消息,.I会说需要并行处理。
我每个客户端都有一个作业,可能需要5分钟到70分钟才能完成,具体取决于给定客户端要处理的数据量。客户端可以随机发布作业请求。
让我们假设5个客户发布了他们的工作,完成各自工作所需的时间如下所示
client1 job - 65 mins
client2 job - 10 mins
client3 job - 5 mins
client4 job - 10 mins
client5 job - 20 mins正常队列有一个问题,因为client1的作业需要65分钟才能完成,因此client2必须等待75分钟(65 + 10)才能完成一个需要10分钟的作业。
我知道在RabbitMQ中我可以创建许多工作者来处理此作业,但根据作业所需的时间和作业在队列中的位置,客户端可能需要很长时间才能完成作业。
因此,我希望为每个客户端创建动态的消费者。每个客户分别为每个客户做这项工作。
这在Rabbitmq中是可能的吗?若有,如何达致此目标?

发布于 2017-02-15 22:27:25
您应该查看Rabbit MQ教程中关于Fair dispatch的部分。
它向您展示了如何使用$channel->basic_qos(null, 1, null);一次只处理一个作业。因此,您可以公平地分发消息。
https://stackoverflow.com/questions/42243522
复制相似问题