Транзакции вызова используются для вызова одной или нескольких команд кластера на целевом узле. Это похоже на вызовы удаленных процедур, выполняемые для команды, определенной в кластере.
Подобно транзакциям записи, транзакции вызова поддерживают временные и неопределенные транзакции. Дополнительную информацию о временных транзакциях см. в разделе « Временные и неопределенные действия» .
Неограниченная транзакция вызова
Вызов действия запроса
Направление: Инициатор -> Цель
Подобно действию запроса на чтение и действию запроса на запись, в этом действии инициатор предоставляет цели:
- Invoke Requests : список путей к командам кластера, а также необязательные аргументы команд, называемые Command Fields .
- Временной запрос: флаг, указывающий, является ли это действие частью транзакции временного вызова.
- Подавить ответ: флаг, указывающий, следует ли подавлять действие «Вызов ответа».
- Идентификатор взаимодействия : целое число, используемое для сопоставления действия запроса вызова с действием ответа вызова.
Вызов ответного действия
Направление: Цель -> Инициатор
После того, как цель получит действие запроса на вызов, она завершит транзакцию действием ответа на вызов, которое содержит:
- Ответы на вызов : список ответов на команды или статус для каждого отправленного запроса на вызов.
- Идентификатор взаимодействия: целое число, используемое для сопоставления действия ответа на вызов с действием запроса на вызов.
Ограничения на неопределенный вызов
Действие Invoke Request может быть групповым, но в этом случае должен быть установлен флаг Suppress Response . Причина в том, что в противном случае сеть может быть перегружена одновременными ответами от каждого члена группы.
Чтобы включить это поведение, путь, используемый в списке запросов на вызов, может содержать группы или, альтернативно, они могут содержать подстановочные знаки, но только в поле Конечная точка. Более того, если действие является групповым, эта транзакция завершается без ответа.
Временные транзакции вызова
Подобно транзакциям записи по времени, транзакции вызова по времени также начинаются с действия запроса по времени.
Действие по временному запросу
Направление: Инициатор -> Цель
Инициатор запускает Транзакцию, отправляя это Действие, которое содержит:
- Таймаут : сколько миллисекунд эта транзакция может оставаться открытой. В течение этого периода следующее действие, отправленное Инициатором, будет считаться действительным.
После получения действия временного запроса цель должна подтвердить действие временного запроса с помощью действия ответа на статус. Как только инициатор получит действие ответа на статус, сообщающее об отсутствии ошибок, он отправит действие запроса на вызов.
Вызов действия запроса
То же, что и ранее описанное действие запроса вызова .
Вызов ответного действия
То же, что и ранее описанное действие Invoke Response Action .
Ограничения на вызов по времени
Все команды вызова могут быть вызваны во время временного взаимодействия. Действие временного запроса, действие запроса вызова и действие ответа вызова предназначены только Unicast и, следовательно, не могут использоваться в качестве групповой рассылки в транзакциях временного вызова.
Действие «Вызов запроса» поддерживает использование путей с группами, а также подстановочных знаков, но действие «Вызов ответа» не поддерживает использование подстановочных знаков.