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

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

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

Вызов транзакции без ограничения по времени

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

Выполнить действие запроса

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

Аналогично действиям «Запрос на чтение» и «Запрос на запись», в этом действии инициатор предоставляет целевому объекту следующую информацию:

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

Вызвать действие ответа

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

После получения целевым устройством запроса на вызов (Invoke Request Action) оно завершит транзакцию, отправив ответный запрос на вызов (Invoke Response Action), который будет содержать:

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

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

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

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

Транзакции с вызовом по расписанию

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

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

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

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

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

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

После получения запроса с заданным временем (Timed Request Action) целевой объект должен подтвердить его получение ответом о состоянии (Status Response Action). После получения инициатором ответа о состоянии, сообщающего об отсутствии ошибок, он отправит запрос на вызов (Invoke Request Action).

Выполнить действие запроса

Аналогично описанному ранее действию «Вызвать запрос» .

Вызвать действие ответа

Аналогично описанному ранее действию «Вызвать ответ» .

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

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

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