Appeler des transactions

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

De la même manière que les transactions d'écriture, les transactions d'appel sont compatibles avec les transactions chronométrées et non chronométrées. Pour en savoir plus sur les transactions chronométrées, consultez la section Actions chronométrées et non chronométrées.

Transaction d'appel non chronométrée

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

Action d'appel de requête

Direction : Initiateur -> Cible

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

  • Requêtes d'appel : liste de chemins d'accès vers des commandes de cluster, ainsi que des arguments facultatifs pour les commandes, appelés champs de commande.
  • Requête chronométrée : indicateur qui indique si cette action fait partie d'une transaction d'appel chronométrée.
  • Supprimer la réponse : indicateur qui indique si l'action d'appel de 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

Direction : Cible -> Initiateur

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

  • 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 de réponse d'appel à l'action de requête d'appel.

Restrictions d'appel non chronométré

L'action Invoke Request peut être un groupcast, mais dans ce cas, l'indicateur Suppress Response doit être défini. Sinon, le réseau pourrait être submergé par les réponses simultanées de tous les membres d'un groupe.

Pour activer ce comportement, le chemin d'accès utilisé dans la liste des requêtes d'appel peut contenir des groupes et, alternativement, des caractères génériques, mais uniquement dans le champ "Endpoint". De plus, si l'action est groupcast, cette transaction se termine sans réponse.

Transactions d'appel chronométrées

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

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

Action de requête chronométrée

Direction : Initiateur -> Cible

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

  • Délai avant expiration : nombre de millisecondes pendant lesquelles cette transaction peut rester ouverte. Pendant cette période, la prochaine action 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 l'accuser réception avec une action de réponse d'état. Une fois que l'initiateur reçoit une action de réponse d'état ne signalant aucune erreur, il envoie une action de requête d'appel.

Action d'appel de requête

Identique à l'action d'appel de requête décrite précédemment.

Appeler l'action de réponse

Identique à l'action d'appel de réponse décrite précédemment.

Restrictions d'appel chronométré

Toutes les commandes d'appel peuvent être appelées sur une interaction chronométrée. Les actions Timed Request, Invoke Request et Invoke Response sont réservées à Unicast et ne peuvent donc pas être utilisées comme groupcast sur les transactions Timed Invoke.

L'action "Appeler une requête" accepte l'utilisation de chemins d'accès avec des groupes, ainsi que des caractères génériques, mais l'action "Appeler une réponse" n'accepte pas l'utilisation de caractères génériques.