Настройка очереди проектов
Очередь на основе RabbitMQ
По умолчанию используется очередь проектов на основе RabbitMQ (рекомендуемый вариант). Такая очередь работает по принципу:
- Для выполнения проекта Оркестратор ставит проект в очередь.
- При выходе проекта из очереди Оркестратор ищет свободного подходящего робота:
- если находит – робот запускается с проектом;
- если не находит – проект отправляется в одну из очередей ожидания в зависимости от своего приоритета (1 – 3). По истечении времени ожидания (несколько секунд) проект выходит из очереди ожидания и снова отправляется в очередь проектов (п.1).
Таким образом, очередь представляет циклический буфер, который по мере добавления в очередь новых проектов и при отсутствии роботов будет увеличиваться.
Настройка времени задержки в очереди ожидания осуществляется в секции RabbitMQ:

- Большие значения задержки увеличивают время пребывания проекта в очереди ожидания. Это снижает частоту проверок, но повышает риск, что другой проект займёт освободившегося робота и фактический порядок выполнения изменится.
- Малые значения задержки обеспечивают более быстрый возврат проекта в основную очередь и более точное соблюдение приоритетов. Однако при этом растёт нагрузка на систему из-за постоянного поиска свободных роботов.
Очередь с гарантированным порядком запуска проектов
Описанное выше поведение очереди можно изменить на очередь с гарантированным порядком запуска проектов. Проектам должны быть назначены приоритеты. Такая очередь работает по следующему принципу:
Сначала обрабатываются проекты, оставшиеся в очереди с предыдущих итераций, затем — новые. Это обеспечивает порядок FIFO.
Для этого в конфигурационном файле WebApi, в секции RobotStart, устанавливаем значение параметра "UseRabbitMQ": false.
И указываем параметры:
"RobotStart": {
"UseRabbitMQ": false,
"BatchSize": 10, // Количество проектов, вычитываемых за одну итерацию
"ThreadSleep": 2000 // Интервал опроса очереди (мс). Увеличение снижает нагрузку на Оркестратор
}Настройка производительности очереди
Параметр ThreadSleep определяет время между циклами опроса очереди проектов. Увеличение этого значения (например, с 500 до 2000 мс) позволяет снизить нагрузку на сервер при большом количестве ожидающих проектов. Параметр BatchSize контролирует количество проектов, обрабатываемых за один цикл. Данные настройки актуальны только при UseRabbitMQ: false.
Приоритеты проектам назначает пользователь в UI Оркестратора, в форме добавления/редактирования проектов.
"ProjectQueue": {
"CleaningDepth": 7
}В секции ProjectQueue параметр CleaningDepth позволяет настроить срок автоматической очистки старых записей (в днях).
Дополнительные материалы
-
Подробнее о параметрах, влияющих на работу очереди проектов, см. Управление очередями проектов
-
О том, как именно работает очередь проектов на уровне RabbitMQ, см. Очередь на основе RabbitMQ
-
Настройки статистики и оптимизации FIFO см. Параметры очереди обмена данными