Вызов транзакций

Транзакции вызова используются для вызова одной или нескольких команд кластера на целевом узле. Это похоже на вызовы удаленных процедур, выполняемые для команды, определенной в кластере.

Подобно транзакциям записи, транзакции вызова поддерживают временные и неопределенные транзакции. Дополнительную информацию о временных транзакциях см. в разделе « Временные и неопределенные действия» .

Неограниченная транзакция вызова

Последовательность операций транзакции бессрочного вызова
Рисунок 1. Несвоевременная транзакция вызова

Вызов действия запроса

Направление: Инициатор -> Цель

Подобно действию запроса на чтение и действию запроса на запись, в этом действии инициатор предоставляет цели:

  • Invoke Requests : список путей к командам кластера, а также необязательные аргументы команд, называемые Command Fields .
  • Временной запрос: флаг, указывающий, является ли это действие частью транзакции временного вызова.
  • Подавить ответ: флаг, указывающий, следует ли подавлять действие «Вызов ответа».
  • Идентификатор взаимодействия : целое число, используемое для сопоставления действия запроса вызова с действием ответа вызова.

Вызов ответного действия

Направление: Цель -> Инициатор

После того, как цель получит действие запроса на вызов, она завершит транзакцию действием ответа на вызов, которое содержит:

  • Ответы на вызов : список ответов на команды или статус для каждого отправленного запроса на вызов.
  • Идентификатор взаимодействия: целое число, используемое для сопоставления действия ответа на вызов с действием запроса на вызов.

Ограничения на неопределенный вызов

Действие Invoke Request может быть групповым, но в этом случае должен быть установлен флаг Suppress Response . Причина в том, что в противном случае сеть может быть перегружена одновременными ответами от каждого члена группы.

Чтобы включить это поведение, путь, используемый в списке запросов на вызов, может содержать группы или, альтернативно, они могут содержать подстановочные знаки, но только в поле Конечная точка. Более того, если действие является групповым, эта транзакция завершается без ответа.

Временные транзакции вызова

Подобно транзакциям записи по времени, транзакции вызова по времени также начинаются с действия запроса по времени.

Последовательность операций транзакции временного вызова
Рисунок 2. Транзакция временного вызова

Действие по временному запросу

Направление: Инициатор -> Цель

Инициатор запускает Транзакцию, отправляя это Действие, которое содержит:

  • Таймаут : сколько миллисекунд эта транзакция может оставаться открытой. В течение этого периода следующее действие, отправленное Инициатором, будет считаться действительным.

После получения действия временного запроса цель должна подтвердить действие временного запроса с помощью действия ответа на статус. Как только инициатор получит действие ответа на статус, сообщающее об отсутствии ошибок, он отправит действие запроса на вызов.

Вызов действия запроса

То же, что и ранее описанное действие запроса вызова .

Вызов ответного действия

То же, что и ранее описанное действие Invoke Response Action .

Ограничения на вызов по времени

Все команды вызова могут быть вызваны во время временного взаимодействия. Действие временного запроса, действие запроса вызова и действие ответа вызова предназначены только Unicast и, следовательно, не могут использоваться в качестве групповой рассылки в транзакциях временного вызова.

Действие «Вызов запроса» поддерживает использование путей с группами, а также подстановочных знаков, но действие «Вызов ответа» не поддерживает использование подстановочных знаков.