Appeler des transactions

Les transactions d'appel permettent d'appeler une ou plusieurs commandes de cluster sur un nœud cible. Il s'agit d'un appel de procédure à distance effectué à une commande définie dans le cluster.

Comme les transactions d'écriture, les transactions d'appel sont compatibles avec les transactions temporelles et non temporelles. Pour en savoir plus sur les transactions temporelles, consultez la section Actions temporelles et non temporelles.

Transaction d'appel sans délai

Séquence d'opérations d'une transaction d'appel non temporisée
Figure 1: Transaction d'appel non temporisée

Appeler l'action de requête

Sens: initiateur -> cible

Comme pour les actions de requête de lecture et d'écriture, dans cette action, l'initiateur fournit à la cible les éléments suivants:

  • Requêtes d'appel: liste des chemins vers les commandes de cluster, ainsi que des arguments facultatifs pour les commandes, nommés Champs de commande.
  • Requête temporisée: indicateur indiquant si cette action fait partie d'une transaction d'appel temporisée.
  • Suppress Response (Supprimer la réponse) : indicateur indiquant si l'action d'appel de la réponse doit être supprimée.
  • ID d'interaction: entier utilisé pour faire correspondre l'action d'appel de requête à l'action d'appel de réponse.

Appeler l'action de réponse

Sens: cible -> initiateur

Une fois que la cible a reçu l'action d'appel de requête, elle finalise la transaction avec une action d'appel de réponse qui contient les éléments suivants:

  • Réponses d'appel: liste des réponses ou de l'état des commandes pour chaque requête d'appel envoyée.
  • ID d'interaction: entier utilisé pour faire correspondre l'action d'appel de réponse à l'action d'appel de requête.

Restrictions d'appel sans délai

L'action d'appel de requête peut être un broadcast de groupe, mais dans ce cas, l'indicateur Suppression de la réponse doit être défini. L'idée est que, sans cela, le réseau pourrait être inondé de réponses simultanées de chaque membre d'un groupe.

Pour activer ce comportement, le chemin utilisé dans la liste des requêtes d'appel peut contenir des groupes et des caractères génériques, mais uniquement dans le champ "Point de terminaison". De plus, si l'action est diffusée en groupe, cette transaction se termine sans réponse.

Transactions d'appel temporisées

Comme les transactions d'écriture temporisées, les transactions d'appel temporisées commencent également par l'action de requête temporisée.

Séquence d'opérations d'une transaction d'appel temporisée
Figure 2: Transaction d'appel temporisée

Action de requête temporisée

Sens: initiateur -> cible

Un initiateur lance la transaction en envoyant cette action qui contient:

  • Timeout: nombre de millisecondes pendant lesquelles cette transaction peut rester ouverte. Pendant cette période, l'action suivante envoyée par l'initiateur sera considérée comme valide.

Une fois l'action de requête temporisée reçue, la cible doit confirmer l'action de requête temporisée avec une action de réponse d'état. Une fois que l'initiateur reçoit une action de réponse d'état indiquant qu'aucune erreur n'a été détectée, il envoie une action de requête d'appel.

Appeler l'action de requête

Il s'agit de la même action que l'action d'appel de requête décrite précédemment.

Appeler l'action de réponse

Il s'agit de la même action que l'action d'appel de la réponse décrite précédemment.

Restrictions d'appel temporisé

Toutes les commandes d'appel peuvent être appelées sur une interaction temporelle. L'action de requête temporelle, l'action d'appel de requête et l'action de réponse d'appel sont réservées à Unicast et ne peuvent donc pas être utilisées en tant que groupcast sur les transactions d'appel temporelles.

L'action d'appel de requête accepte l'utilisation de chemins avec des groupes, ainsi que d'expressions génériques, mais l'action d'appel de réponse n'accepte pas l'utilisation d'expressions génériques.