RabbitMQ / AMQP / Gearman根据作业类型和分组分配工作量

时间:2013-11-07 06:20:21

标签: multithreading rabbitmq amqp gearman

我正在开发一个系统,它有许多适合排队的任务,并且已经有一些现有的自制传统解决方案已经到位,这些解决方案在不同程度上有效,我熟悉gearman并且已经阅读了RabbitMQ教程并且我已经阅读了热衷于upgrade目前的解决方案,使用这些更强大的现有解决方案之一(由于灵活性和可扩展性以及管理插件,倾向于使用RabbitMQ atm)。

我无法理解如何解决一个问题,该问题允许用户A排队A类的大量作业(假设为5000),然后阻止处理任何新添加的A类作业,直到用户A为止工作完成了。我希望实现一个能够公平地分担负载的解决方案,甚至只是在排队用户之间进行循环。

有没有人对我如何实施解决方案有任何建议或见解?

我认为routing_keys可能会有所帮助,但如果用户A的作业在用户B添加其作业之前排队,那么在用户A的作业被占用之前,它们仍然不会被处理?

我还想过为每个用户创建一个队列& jobtype但我不确定如何动态地这样做? 也许我需要实现某种控制队列来设置队列并动态调整工作进程以使用新添加的仅用户队列,但是工作者是否会以循环方式从队列中收集作业?我如何决定何时删除队列?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好的没有任何人的评论,所以最后我发现在rabbitmq中你可以以循环式方式从多个队列中消费。因此,我构建了一个队列,通知消费者工作者从队列中消耗并为每个用户任务动态创建一个队列,这些队列在空时定期删除。