Задать вопрос

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

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

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

Можно конечно это отслеживать на стороне продьюсера и не добавлять задания быстрее, чем нужно, но хотелось бы просто кидать задания в очередь, и чтобы она сама про это думала.
  • Вопрос задан
  • 3366 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
  • Учебный центр IBS
    ARC-PRG-001 Архитектор ПО. Путь к мастерству в проектировании систем
    2 недели
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Нужно ограничивать скорость потребления сообщений из очереди. Если внешним системам нужен отдых, то обработчик, потребляющий задания из очереди, должен следить за обеспечением этого условия.
Если потребители уже написаны и у вас нет их кода, можно посадить их на отдельные очереди и написать простой маршрутизатор перекладывающий сообщения из общей очереди заданий в очередь заданий для внешней системы с нужной задержкой.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы