Очереди обмена данными
Очереди обмена данными – это структуры данных в базе данных Оркестратора, используемые для организации коммуникации роботов при выполнении RPA-проектов.
Очереди могут работать по принципу FIFO («первым пришёл – первым обслужен») или по фильтру с блокировкой, при котором элемент извлекается только одним роботом. Чтение с фильтром гарантирует эксклюзивный доступ к элементу и оптимально использует блокировки в базе данных.
Особенности версии 1.25.11: при фильтрации с опцией Занимать (в Студии - активность Получить из очереди по фильтру) блокировка применяется только к элементам, соответствующим фильтру. Для зашифрованных очередей блокировка с фильтром запрещена (ошибка HTTP 409 Conflict).

1. Создание очереди
Элементы очереди обмена данными:

Чтобы создать очередь:
- Перейдите в Роботы → Очереди обмена данными.
- Нажмите Добавить очередь.
- Задайте параметры очереди. Подробное описание параметров приведено в разделе 2. Настройки очереди.
Общие схемы алгоритмов для обработки очереди:

2. Настройки очереди
Очередь обмена данными может создаваться с настройками, определяющими её поведение:
| №п/п | Наименование | Описание |
|---|---|---|
| 1. | Время жизни элемента очереди (сек.) | Время, после которого элемент принудительно удаляется из очереди |
| 2. | Максимальное количество попыток поставить элемент в очередь повторно | Когда элемент очереди получает статус Завершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой, он ставится в очередь по FIFO повторно. После превышения этого значения элемент в очередь повторно не ставится |
| 3. | На какие ошибки элемент должен ставиться в очередь повторно | Завершилось с ошибкой общего вида или Завершилось с бизнес-ошибкой |
| 4. | Specific JSON Schema | JSON-схема входных данных, помещаемых в очередь |
| 5. | Робот может удалять только свои элементы | Робот по ключу сможет удалить только те элементы, которые он сам поместил в очередь |
| 6. | Публичная | Доступна либо всем роботам, либо только перечисленным |
| 7. | Зашифрована | Элементы очереди будут зашифрованы в БД. Если потом при редактировании очереди снять этот флаг, новые элементы останутся незашифрованными. С версии 1.25.11 В случае работы с зашифрованными очередями (Encrypted = true) блокировка с фильтром по значению теперь запрещена. Если попытаться применить такую блокировку, Оркестратор вернет ошибку HTTP 409 Conflict. |
| 8. | Физическое удаление | Если выбрано физическое удаление, элемент безвозвратно будет удален из очереди. Если логически, то они остаются в БД, их можно видеть в UI Оркестратора |
| 9. | Кол-во попыток при извлечении элемента по FIFO | Определяет, сколько раз робот может попытаться извлечь элемент из очереди по FIFO, прежде чем очередь будет считаться пустой, что позволяет реализовать различные сценарии обработки на стороне клиента (см. схемы выше). |
| 10. | Автоматическая очистка | Включает автоматическое удаление элементов очереди по заданным правилам. Детальная настройка описана в разделе Автоматическая очистка. |
3. Элементы очереди
Жизненный цикл и статусы элементов
Текущее состояние элемента отображается в колонке Статус. Каждый элемент в процессе обработки проходит через следующие статусы:
- New — элемент добавлен, но не извлечен.
- InProgress — элемент извлечен роботом.
- Success — обработка элемента завершена успешно.
- Error — обработка элемента завершена с общей ошибкой.
- Business Error — обработка завершена с бизнес-ошибкой.
Созданный элемент автоматически получает статус New. Дальнейшее изменение статусов зависит от логики обработки элемента роботом (подробнее см. активность Изменить состояние элемента очереди).
Обратите внимание: Статусы New и InProgress присваиваются системой автоматически. Финальные статусы (Success, Error, Business Error) фиксируются в истории изменений элемента и могут быть присвоены только из статуса InProgress.
Управление элементами
Элементы очереди поддерживают следующие операции:
- Клонирование — создается новый элемент (с новым уникальным идентификатором) со статусом New. Он полностью аналогичен оригиналу по содержанию, но имеет обнуленный счетчик повторов.
- Повторение — существующий элемент (с тем же идентификатором) возвращается в состояние New. Сбрасываются признак прочтения, ссылка на текущий статус и счетчик повторов.
- Удаление — элемент удаляется из очереди согласно настройке Физическое удаление (см. раздел 2).
Статистика по очереди
На основе событий взаимодействия роботов с очередью система автоматически вычисляет статистику:
- Количество элементов в каждом из статусов.
- График среднего времени обработки элемента (время между извлечением элемента и присвоением ему финального статуса).
Дополнительные параметры элементов
| №п/п | Наименование | Описание |
|---|---|---|
| 1. | Натуральный ключ | Содержательный идентификатор элемента очереди. Может быть глобальным в пределах очереди, в пределах всех очередей или уникальность может отсутствовать |
| 2. | Метаданные | Словарь Ключ-значение с произвольными строковыми данными. При обновлении метаданные полностью переписываются |
| 3. | Дата, до которой элемент считается недоступным | Элемент недоступен для обработки до указанной даты |
| 4. | Дата, после которой элемент считается недоступным | Элемент недоступен для обработки после указанной даты |
| 5. | Статус элемента очереди | Текущий статус элемента в истории его статусов. |
| 6. | Теги | Произвольные строки, по которым может осуществляться поиск элементов |
| 7. | Приоритет | Определяет порядок обработки элементов в очереди. См. статью Сценарии работы основного пользователя |

Далее приведены дополнительные механизмы и настройки, влияющие на обработку элементов очереди.
JSON-схемы для очередей
При создании очереди обмена данными можно задать Specific JSON Schema для валидации входных данных элементов очереди.
Примечание: Output JSON Schema и Analytics JSON Schema в текущих версиях Оркестратора не влияют на работу очередей.
Пример JSON-схемы для валидации данных
{
"type": "object",
"properties": {
"prop1": { "type": "string" },
"prop2": { "type": "array" }
},
"additionalProperties": false
}Пример данных, соответствующих схеме:
{
"prop1": "James",
"prop2": [".NET", "LOLCATS"]
}Автоматическая очистка очередей обмена данными
Доступно с версии 1.25.11

Функция автоматической очистки позволяет удалять устаревшие элементы без участия оператора. Настройка выполняется в форме Роботы → Очереди обмена данными → Редактировать очередь → Автоматическая очистка очереди от старых элементов
Параметры настройки очистки
| Наименование | Описание |
|---|---|
| Тип очистки | Определяет условие автоматического удаления элементов очереди. Доступные варианты: • Очистка не производится - автоматическое удаление отключено; • При превышении возраста элемента - удаляются элементы, возраст которых превышает указанное значение; • При превышении максимального количества элементов - удаление выполняется при превышении заданного лимита размера очереди. |
| Значение параметра | Числовое значение для выбранного типа очистки (количество дней или максимальное количество элементов). |
Механизм работы
Автоматическое удаление элементов выполняет служба WebApi - ExchangeQueueValuesAutoDeleteService.
- запускается автоматически при старте WebApi;
- удаляет элементы только в тех очередях, где включена функция автоматической очистки;
- работает с заданным интервалом.
Интервал выполнения очистки
Интервал запуска службы задается параметром в конфигурационном файле WebApi:
ExchangeQueueValuesAutoDeleteInterval— интервал в минутах.- Не добавляется в файл по умолчанию, может быть внесен вручную.
- Минимальное значение: 5 минут.
- Значение по умолчанию: 60 минут.
Записи в журнале событий Оркестратора
При выполнении очистки создаются записи в Журнале событий Оркестратора.
В общее перечисление OrchestratorEvent, используемое всеми сервисами Оркестратора, создаются записи:
ExchangeQueueItemsAutoDeleteServiceSuccess(код 3030) — успешное удаление элементов.ExchangeQueueItemsAutoDeleteServiceError(код 3031) — ошибка при выполнении очистки.
События фиксируются только при фактическом удалении элементов или возникновении ошибки.
Подробнее обо всех событиях Оркестратра см. в статье Перечень событий Оркестратора
Автоматическая архивация очередей обмена данными
Доступно с версии 1.26.1 / 1.25.7.20 LTS
Начиная с указанных версий, в дополнение к полному удалению элементов реализована архивация — данные сохраняются в отдельных таблицах базы данных и остаются доступными для просмотра.
Особенности:
- Сохранение данных — элементы не удаляются безвозвратно, а переносятся в архивные таблицы (
ExchangeQueueValuesArchive,TagsArchiveи др.) - Возможность просмотра — архивные данные доступны через интерфейс Orchestrator с использованием фильтра
archive=true - Расширенная конфигурация — добавлены параметры для настройки минимальных порогов архивации

Для новых установок:
- При создании или редактировании очереди перейдите в настройки “Автоматическая архивация очереди”
- Выберите тип архивации:
- “Архивация не выполняется” — функция отключена
- “При превышении возраста элемента” — архивация по времени (дни)
- “При превышении максимального количества элементов” — архивация по объёму (Например, 500 элементов за одну транзакцию архивации)
- Укажите значение параметра (количество дней или элементов)
Конфигурационные параметры архивации:
{
"ExchangeQueue": {
/* Минимальный возраст элемента (в днях) для архивации */
"MinExchangeQueueArchiveLimitDays": 30,
/* Минимальное количество элементов очереди для архивации */
"MinExchangeQueueArchiveLimitElements": 100000,
/* Интервал (минут) между запусками автоматической архивации */
"ExchangeQueueValuesAutoDeleteInterval": 60,
/* Размер пакета (записей) в сервисе автоматического удаления/архивации старых элементов очередей обмена данными (допустимый диапазон от 1 до 10000) */
"ExchangeQueueValuesAutoDeleteChunkSize": 100
}
}Важно: Параметр
ExchangeQueueValuesAutoDeleteChunkSizeизначально не отображается в конфигурационном файле — его необходимо добавить вручную в секцию “ExchangeQueue”. Значение по умолчанию — 100, допустимый диапазон — от 1 до 10000.
Пример настройки:
{
"ExchangeQueue": {
"MinExchangeQueueArchiveLimitDays": 7,
"MinExchangeQueueArchiveLimitElements": 50000,
"ExchangeQueueValuesAutoDeleteInterval": 30,
"ExchangeQueueValuesAutoDeleteChunkSize": 500
}
}В этом примере:
- Архивация сработает для элементов старше 7 дней
- При достижении 50 000 элементов в очереди
- Служба архивации будет запускаться каждые 30 минут
- За одну транзакцию будет архивироваться 500 элементов
Архивные таблицы в БД:

Рекомендации
Если архивные таблицы содержат большое количество записей, рекомендуется периодически переносить данные на внешний накопитель и очищать таблицы после остановки Оркестратора.
Примечание по версиям: В LTS-ветке 1.25.7 функция архивации доступна начиная с патча 1.25.7.20. В более ранних версиях поддерживается только очистка элементов без возможности их последующего просмотра.