Invocar transações

As transações de invocação são usadas para invocar um ou mais comandos de cluster em um nó de destino. Elas são semelhantes a chamadas de procedimento remoto feitas para um comando definido no cluster.

Assim como as transações de gravação, as transações de invocação oferecem suporte a transações com e sem tempo limite. Consulte a seção Ações com e sem tempo limite para mais informações sobre transações com tempo limite.

Transação de invocação sem tempo limite

Sequência de operações de uma transação de invocação sem tempo
Figura 1: transação de invocação sem tempo limite

Ação de solicitação de invocação

Direção: iniciador -> destino

Semelhante à ação de solicitação de leitura e à ação de solicitação de gravação, nessa ação o iniciador fornece ao destino:

  • Solicitações de invocação: uma lista de caminhos para comandos de cluster, bem como argumentos opcionais para os comandos, chamados de campos de comando.
  • Solicitação com tempo limite: um flag que indica se essa ação faz parte de uma transação de invocação com tempo limite.
  • Suprimir resposta: um flag que indica se a ação de resposta de invocação precisa ser suprimida.
  • ID de interação: um número inteiro usado para corresponder a ação de solicitação de invocação a ação de resposta de invocação.

Ação de resposta de invocação

Direção: destino -> iniciador

Depois que o destino recebe a ação de solicitação de invocação, ele finaliza a transação com uma ação de resposta de invocação que contém:

  • Respostas de invocação: uma lista de respostas de comando ou status para cada solicitação de invocação enviada.
  • ID de interação: um número inteiro usado para corresponder a ação de resposta de invocação à ação de solicitação de invocação.

Restrições de invocação sem tempo limite

A ação de solicitação de invocação pode ser um grupo, mas, nesse caso, o flag Suprimir resposta precisa ser definido. Caso contrário, a rede poderá ser inundada por respostas simultâneas de todos os membros de um grupo.

Para ativar esse comportamento, o caminho usado na lista de solicitações de invocação pode conter grupos ou curingas, mas apenas no campo "Endpoint". Além disso, se a ação for um grupo, essa transação será encerrada sem resposta.

Transações de invocação com tempo limite

Semelhante às transações de gravação com tempo limite, as transações de invocação com tempo limite também começam com a ação de solicitação com tempo limite.

Sequência de operações de uma transação de invocação programada
Figura 2: transação de invocação com tempo limite

Ação de solicitação com tempo limite

Direção: iniciador -> destino

Um iniciador começa a transação enviando essa ação que contém:

  • Tempo limite: quantos milissegundos essa transação pode permanecer aberta. Durante esse período, a próxima ação enviada pelo iniciador será considerada válida.

Depois que a ação de solicitação com tempo limite é recebida, o destino precisa confirmar a ação de solicitação com tempo limite com uma ação de resposta de status. Quando o iniciador recebe uma ação de resposta de status informando que não há erros, ele envia uma ação de solicitação de invocação.

Ação de solicitação de invocação

Igual à ação de solicitação de invocação descrita anteriormente.

Ação de resposta de invocação

Igual à ação de resposta de invocação descrita anteriormente.

Restrições de invocação com tempo limite

Todos os comandos de invocação podem ser chamados em uma interação com tempo limite. A ação de solicitação com tempo limite , a ação de solicitação de invocação e a ação de resposta de invocação são Unicast-apenas e, portanto, não podem ser usadas como grupo em transações de invocação com tempo limite.

A ação de solicitação de invocação oferece suporte ao uso de caminhos com grupos, bem como curingas, mas a ação de resposta de invocação não oferece suporte ao uso de curingas.