Parallel
Общее описание
Логический блок Parallel предназначен для создания нескольких независимых веток потока, в которых выполняются параллельные задачи. В каждую такую ветку поступает копия начального сообщения, которое потом обрабатывается согласно логике, выстроенной в конкретной ветке.
Две пустые ветки добавляются автоматически при добавлении логического блока Parallel. Вы можете добавить еще одну или несколько веток, нажав на кнопку «+» справа от блока Parallel.
Ветку блока Parallel можно удалить вместе с блоком, размещенным в ней, нажав на кнопку удаления. При удалении элемента из последней ветки сама не удаляется, а отображается как пустая.
При удалении блока Parallel все его ветки удаляются вместе с ним.
Настройка блока
В данном разделе описаны параметры блока Parallel, которые необходимо заполнить при настройке и примеры заполнения значений этих параметров.
Базовые параметры блока Parallel
| Название в UI | Название | Обязательный | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|---|
| Parallel Processing | parallelProcessing | Нет | Если эта функция включена, отправка сообщений блокам-получателям происходит одновременно. Обратите внимание, что тред, вызвавший отправку, будет ждать полной обработки всех сообщений, прежде чем продолжить работу. Одновременно происходит только отправка и обработка ответов от блоков-получателей. Если включена параллельная обработка, механизм маршрутизации продолжит обработку с использованием последнего использованного потока из пула параллельных тредов. Однако, если вы хотите использовать исходный поток, вызвавший отправку блокам-получателям, обязательно включите параметр синхронизации. В режиме параллельной обработки вы можете также указать значение параметра True, чтобы заставить этот блок обрабатывать подзадачи с использованием верхних границ тред-пула. Если указать значение параметра False, это позволит движку использовать как можно больше тредов, которые могут быть доступны благодаря использованию других тред-пулов. | False | Логическое значение |
| Streaming | streaming | Нет | Если этот параметр включен, ответы будут обрабатываться в том порядке, в котором они приходят. Если этот параметр отключен, ответы будут обрабатываться точно в том же порядке, который определен в блоке Parallel. | False | Логическое значение |
| Synchronous | synchronous | Нет | Определяет, следует ли строго использовать синхронную обработку. Если этот параметр включен, то для продолжения маршрутизации после завершения многоадресной отправки используется тот же поток, даже если включена параллельная обработка. | False | Логическое значение |
Расширенные параметры блока Parallel
| Название | Обязательный | Описание | Значение по умолчанию | Тип данных | |
|---|---|---|---|---|---|
| Disabled | disabled | Нет | Определяет будет ли отключен блок в потоке. В активированном потоке функциональность блока не будет отрабатываться. | False | Логическое значение |
| Timeout | timeout | Нет | Устанавливает общее время ожидания, указанное в миллисекундах, при использовании параллельной обработки. Если многоадресной рассылке не удалось отправить и обработать все ответы в течение заданного периода времени, то срабатывает таймаут, многоадресная рассылка прерывается на текущем процессе и начинается следующий процесс обработки. При использовании агрегационной стратегии, основанной на Timeout, нужно иметь в виду, что если по истечении времени ожидания все еще остаются запущенные задачи, то некоторые задачи, которые сложно завершить корректным образом, могут продолжать выполняться. Поэтому используйте этот параметр с осторожностью. | Строка | |
| Executor Service | executorService | Нет | Ссылается на пользовательский пул тредов, который будет использоваться для параллельной обработки. Обратите внимание, что если вы зададите этот параметр, то параллельная обработка будет подразумеваться автоматически, и вам также не нужно включать этот параметр. | Строка | |
| Share Unit Of Work | shareUnitOfWork | Нет | Совместно использует единицы работы с родительским и каждым из вложенных сообщений. По умолчанию многоадресная рассылка не будет разделять единицу работы между родительским обменом и каждым многоадресным обменом. Это означает, что у каждого вложенного обмена есть своя отдельная единица работы. | False | Логическое значение |
| Stop On Exception | stopOnException | Нет | Если во время обработки данных произойдет сбой, то дальнейшая обработка будет остановлена и сгенерировано исключение. Также процесс будет остановлен, если при обработке данных появилось сообщение об ошибке или было зафиксировано успешно обработанное исключение. Во всех случаях многоадресная рассылка остановит дальнейшую обработку. | False | Логическое значение |
| Aggregation Strategy Method Name | aggregationStrategyMethodName | Нет | Этот параметр используется для явного объявления имени метода агрегации. | False | Логическое значение |
| Aggregation Strategy Method Allow Null | aggregationStrategyMethodAllowNull | Нет | Если этот параметр имеет значение False, то метод aggregate не применяется, если не было входных данных для обогащения. Если этот параметр имеет значение True, агрегационная стратегия применяется с использованием значений NULL. | False | Логическое значение |