0

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

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

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

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

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

提前感谢您的帮助!

4

1 回答 1

0

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

于 2013-11-17T22:46:09.873 回答