【发布时间】:2017-02-15 07:53:36
【问题描述】:
我使用 RabbitMQ 将消息从 symfony 发送到 nodeJs。我会说需要并行处理。
我每个客户都有一个作业,可能需要 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 中可行吗?如果是,如何实现?
【问题讨论】:
-
我不是节点专家,但我认为它允许异步处理?难道你不能有一个进程监听 RabbitMQ 消息然后异步处理它们吗?