我有一个生产者和工人系统。制片人制作任务。我需要将任务分配给工人。任务有类型。工人是专业的。每个工作人员都可以处理任务类型的子集。例如,我有任务类型:A,B,C,D
Worker1 can handle tasks types { A, B, C }
Worker2 can handle: { A, C }
Worker3 can handle: { A, B, D }
etc...
并非所有工人都一直在运行。因此,对于某些任务类型,甚至可能没有能够处理任务的正在运行的工作程序,因此任务必须在队列中等待,直到能够处理该任务的工作程序开始。
系统应该是公平的,因此任务应该按照相同的顺序(如果可能的话)处理。
似乎我需要为每个任务类型创建一个队列,并将worker命名为他们能够处理的类型。
但是,似乎无法阻止订阅多个队列。实现这一目标的唯一方法是主动等待。
有什么想法吗? RabbitQM适合这个问题吗?