0

我们正在编写邮件同步系统,为此我们使用 RabbitMQ。每个生产者推送邮件 id,然后消费者获取 id 并将邮件插入数据库。在我们有 100 个消费者(例如)并且生产者生成 id 太快的情况下,每个消费者都会获得 id 并使用 api 来获取邮件,因此对 api 的并发请求限制会例外。

Сan 我们限制每个生产者的消费者(例如,如果最多 3 个消费者将接收一个生产者的 id,那么接下来的 3 个消费者将从另一个生产者接收,依此类推)?

4

1 回答 1

0

Сan 我们限制每个生产者的消费者(例如,如果最多 3 个消费者将接收一个生产者的 id,那么接下来的 3 个消费者将从另一个生产者接收,依此类推)?

您可以通过使用简单的路由来做到这一点。

ProducerA使用路由键routeA发送消息,并且consumer1consumer2consumer3订阅以使用路由键routeA进行交换。
ProducerB使用路由键routeBconsumer4发送消息,consumer5consumer6订阅以使用路由键routeB进行交换。.. 等等
你也可以使用主题交换

但是,在我看来,这可能不是解决 API 并发请求限制异常问题的解决方案。你没有指定哪个 API,所以我可以假设这个数字是可配置的,你可以增加它,或者只是不允许并发访问(这很难想象,因为你知道,不是 70 年代),其中万一并行性的整个想法崩溃了……

于 2016-04-06T19:37:39.340 回答