Блок-схема на скриншоте показывает общий принцип работы очереди. В данном случае под синхронными интеграциями понимаем те, без завершения которых не двигаемся далее по коду. Например интеграция при оплате товара. Обычно такие интеграции возвращают значение, которое необходимо использовать далее по алгоритму. Асинхронные интеграции - это не требующие немедленного выполнения и, как правило, не возвращающие какого-либо значения. Пример асинхронной интеграции - это начисление бонусов покупателю. Мы можем сообщить покупателю, что в течении какого-то времени бонусы будут начислены и далее двигаться по процедуре продажи.
Как видим на блок-схеме принцип вызова процедур разный:
Для асинхронных методов мы сразу добавляем задачу в очередь и не тратим время на ожидание завершения этой интеграции. Очередь выполнит нашу асинхронную процедуру сразу после добавления с помощью фонового задания. В случае неудачи оставит процедуру у себя для доотправки.
Для синхронных методов мы добавляем в очередь только в том случае, если интеграция не отработала.
Примеры как именно вызывать функции синхронных и асинхронных интеграций содержаться в обработке "Примеры работы очереди".
Примеры функций интеграций содержатся в модуле "ВыполнениеИнтеграций".
Обработка и модуль входят в приложенный файл cf, но не являются частью подсистемы.
Добавление в очередь происходит функцией ОбновитьОчередьИнтеграций. Запуск очереди это процедура ОтправитьИзОчередиИнтеграций.
Настройки очередей:
По умолчанию запуск конкретной задачи из очереди происходит в течении суток с момента помещения её в очередь. При помощи константы "ДлительностьУниверсальнойОчередиИнтеграций"можно изменить это время (в сек).
Также есть регистр сведений "Настройка универсальной очереди". Регистр предназначен для настройки конкретной интеграции. На примере на скриншоте выставлены значения Частота=600, Длительность=3600. Это значит, что данная интеграция будет осуществлять попытку успешно выполниться в течении часа (3600сек) с периодичностью каждые 10 мин (600сек). В случае успешного выполнения задача уйдет из очереди. Если в течении этого времени задача выполнена успешно не будет, то она так и останется в очереди, но попыток её отправить более не будет. Это необходимо для понимания что именно не отработало, чтобы запустить это в ручном режиме, изменить настройки очереди для данной интеграции и.т.д.
Запуск очереди происходит с помощью регламентного задания. По умолчанию задание запускается каждые 5 мин.
Разработка и тестирование происходили на платформе 1С 8.3.11.2867.