0

我是 RabbitMQ 的新手,我想知道如何实现以下内容:生产者为多个站点创建任务,有一群消费者应该一个一个地处理这些任务,但只与 1 个并发的站点交谈,没有在上一个任务结束之前为该站点启动一项新任务。这样,缓慢的站点将被缓慢地处理,而快速的站点 - 快速(而不是慢速站点占用所有工作人员容量)。

理想情况下,一个站点一次只能由一个工人处理,如果它死了,由另一个工人代替。这似乎是独占队列的任务,但显然没有简单的方法来列出和订阅新队列。使用 RabbitMQ 实现此类结果的正确方法是什么?

4

1 回答 1

1

我认为你可能有错误的方式。对于工人,您有 1 个或多个生产者发送到 1 个交易所。交换器有 1 个队列(您可以直接发送到队列,但真正做的是通过默认交换器进行,我更愿意明确表示)。所有消费者连接到单个队列并依次读取任务。您应该将队列设置为要求在删除消息之前确认消息。这样,如果一个进程死亡,它应该被返回到队列并由下一个消费者/工作者拾取。

于 2013-06-24T15:56:44.710 回答