Skip to Content

Настройка очереди проектов

Очередь проектов определяет порядок обработки запросов на запуск RPA-проектов. В конфигурационном файле WebApi можно выбрать режим работы очереди и настроить задержки повторных попыток запуска.

Очередь на основе RabbitMQ

По умолчанию используется очередь проектов на основе RabbitMQ — рекомендуемый вариант.

Такая очередь работает по следующему принципу:

  1. Для выполнения проекта Оркестратор помещает его в основную очередь.
  2. При получении проекта из основной очереди Оркестратор ищет свободного подходящего робота:
    • если робот найден — запускает на нём проект;
    • если робот не найден — отправляет проект в одну из очередей ожидания в зависимости от его приоритета.
  3. По истечении задержки проект возвращается из очереди ожидания в основную очередь. Оркестратор повторяет поиск свободного робота.

Если подходящие роботы заняты, проекты проходят этот цикл повторно. При поступлении новых проектов количество ожидающих запусков может увеличиваться.

Настройка задержки

Задержка задаётся параметром ExpirationSec в настройках очередей ожидания в секции RabbitMQ. Значение указывается в секундах.

На скриншоте для очередей DeferredQueue1, DeferredQueue2 и DeferredQueue3 настроены задержки 2, 5 и 20 секунд соответственно.

alt

  • Большие значения задержки увеличивают время пребывания проекта в очереди ожидания и снижают частоту поиска свободного робота. Пока проект ожидает, освободившегося робота может занять другой проект.
  • Малые значения задержки обеспечивают более быстрый возврат проекта в основную очередь и более частые попытки поиска свободного робота. При этом возрастает нагрузка на систему.

Уменьшение задержки не гарантирует соблюдения порядка добавления проектов или их приоритетов.

alt

Пример изменения порядка запуска

Предположим, проекты А и Б имеют одинаковый приоритет и могут выполняться на одном роботе. Для их очереди ожидания DeferredQueue2 задана задержка ExpirationSec: 5, как показано на скриншоте.

  1. Проект А поступает в основную очередь первым. Робот занят, поэтому проект А отправляется в очередь ожидания на 5 секунд.
  2. Через 2 секунды робот освобождается, но проект А ещё находится в очереди ожидания.
  3. В основную очередь поступает проект Б. Оркестратор находит свободного робота и запускает проект Б.
  4. По истечении 5 секунд проект А возвращается в основную очередь. Если робот занят выполнением проекта Б, проект А снова отправляется в очередь ожидания.

В результате проект Б запускается раньше проекта А, хотя был добавлен позже.

Аналогичная ситуация возможна для проектов с разными приоритетами: пока проект с более высоким приоритетом находится в очереди ожидания, свободного робота может занять проект с более низким приоритетом.

Очередь с гарантированным порядком запуска проектов

Для использования очереди с гарантированным порядком запуска отключите RabbitMQ для запуска проектов. В конфигурационном файле WebApi, в секции RobotStart, установите значение параметра UseRabbitMQ в false.

В этом режиме очередь проектов опрашивается с заданным интервалом. Сначала обрабатываются проекты, оставшиеся с предыдущих итераций, затем — новые. При обработке учитываются назначенные проектам приоритеты.

Приоритеты назначаются пользователем в интерфейсе Оркестратора, в форме добавления или редактирования проекта.

alt

Настройка производительности

В секции RobotStart также задаются размер обрабатываемой группы проектов и интервал опроса очереди:

"RobotStart": { "UseRabbitMQ": false, "BatchSize": 10, // Количество проектов, вычитываемых за одну итерацию "ThreadSleep": 2000 // Интервал опроса очереди (мс). Увеличение снижает нагрузку на Оркестратор }

Увеличение ThreadSleep, например с 500 до 2000 мс, снижает частоту опроса и нагрузку на Оркестратор, но увеличивает время до следующей попытки запуска.

Параметры BatchSize и ThreadSleep применяются только при UseRabbitMQ: false.

Очистка старых записей

В секции ProjectQueue параметр CleaningDepth задаёт срок автоматической очистки старых записей, в днях:

"ProjectQueue": { "CleaningDepth": 7 }

Дополнительные материалы

Last updated on