Берегись! Скоро будут запущены новые программы Developer Preview. Подайте заявку здесь и станьте одним из первых, кто опробует новые инструменты и оставит отзыв.

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

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

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

Несвоевременная транзакция вызова

Последовательность операций Untimed Invoke Transaction
Рисунок 1: Транзакция Invoke без синхронизации

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

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

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

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

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

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

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

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

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

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

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

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

Подобно транзакциям Timed Write, транзакции Timed Invoke также начинаются с действия Timed Request.

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

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

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

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

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

Как только действие «Запрос по времени» получено, цель должна подтвердить действие «Запрос по времени» с помощью действия «Отклик о состоянии». Как только Инициатор получит ответное действие о статусе, сообщающее об отсутствии ошибок, он отправит действие Invoke Request.

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

То же, что и ранее описанное Invoke Request Action .

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

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

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

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

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