我是RabbitMQ的新手,我想知道如何实现以下内容:生产者为多个站点创建任务,有一群消费者应该逐个处理这些任务,但只与1个站点并行处理1,在上一个站点结束之前没有为该站点启动新任务。这样慢的网站将被缓慢处理,快速的网站将被快速处理(相反,慢速网站占用所有工作人员的能力)。
理想情况下,一个站点一次只能由一个工作人员处理,如果它已经死亡,则由另一个工作人员替换。这似乎是独占队列的任务,但显然没有简单的方法来列出和订阅新队列。使用RabbitMQ实现此类结果的正确方法是什么?
答案 0 :(得分:1)
我认为你可能有错误的方法。对于工人,您有1个或更多生产者发送到1个交换。交换有1个队列(你可以直接发送到队列,但所有真正做的是通过默认交换,我更喜欢明确)。所有消费者都连接到单个队列并依次读取任务。您应该将队列设置为要求在删除消息之前确认消息。这样,如果进程终止,它应该返回队列并由下一个使用者/工作者接收。