Как сгруппировать потребителей в RabbitMQ?

Мы пишем систему синхронизации почты, и для этого используем RabbitMQ. Каждый производитель отправляет идентификаторы писем, затем потребитель получает идентификаторы и вставляет письма в базу данных. В ситуации, когда у нас есть 100 потребителей (например), а производители будут генерировать идентификаторы слишком быстро, каждый потребитель получит идентификаторы и будет использовать api для получения писем, поэтому тогда будет исключение из-за ограничения одновременных запросов к api.

Можно ли ограничить потребителя для каждого производителя (например, если максимум 3 потребителя получат идентификаторы одного производителя, то следующие 3 получат идентификаторы от другого и так далее)?


person Portey Vasil    schedule 06.04.2016    source источник


Ответы (1)


Можно ли ограничить потребителя для каждого производителя (например, если максимум 3 потребителя получат идентификаторы одного производителя, то следующие 3 получат идентификаторы от другого и так далее)?

Вы можете сделать это, используя простую маршрутизацию.

ProducerA отправляет сообщения с ключом маршрутизации: routeA и потребитель1, потребитель2 и потребитель3 подписаны. для обмена с ключом маршрутизации routeA.
ProducerB отправляет сообщения с ключом маршрутизации routeB и consumer4, consumer5 и consumer6 подписаны на обмен с ключом маршрутизации routeB. .. и т. д.
Вы также можете использовать обмен темами.

Однако мне кажется, что это не может быть решением проблемы исключения об ограничении одновременных запросов к API. Вы не указали, какой API, поэтому я могу предположить, что это число настраивается и вы можете его увеличить, или просто одновременный доступ не разрешен (что трудно представить, поскольку, как вы знаете, это не 70-е годы), в которых случае вся идея параллелизма рассыпается и рушится ...

person cantSleepNow    schedule 06.04.2016