Как организовать очереди сообщений (типа RabbitMQ) с ограничением скорости обработки?

Мне нужно организовать параллельную обработку заданий на нескольких машинах. Каждое задание - это обращение к одной из 10 внешних систем, которые нежелательно дергать чаще заданного интервала. У каждой системы он свой: примерно от 0 до 5000 мс.
Мне нужен хитрый механизм организации очередей, так чтобы с одной стороны любой обработчик мог получить любое задание, а с другой - задания обрабатывались не быстрее минимального интервала.

Про RabbitMQ пока только читаю, но похоже, он такое не умеет.

Можно конечно это отслеживать на стороне продьюсера и не добавлять задания быстрее, чем нужно, но хотелось бы просто кидать задания в очередь, и чтобы она сама про это думала.
  • Вопрос задан
  • 3347 просмотров
Пригласить эксперта
Ответы на вопрос 1
Нужно ограничивать скорость потребления сообщений из очереди. Если внешним системам нужен отдых, то обработчик, потребляющий задания из очереди, должен следить за обеспечением этого условия.
Если потребители уже написаны и у вас нет их кода, можно посадить их на отдельные очереди и написать простой маршрутизатор перекладывающий сообщения из общей очереди заданий в очередь заданий для внешней системы с нужной задержкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы