Appeler des transactions

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

Comme les transactions d'écriture, les transactions d'invocation sont compatibles avec les transactions avec et sans délai. Pour en savoir plus sur les transactions temporisées, consultez la section Actions temporisées et non temporisées.

Transaction d'invocation sans délai

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

Action d'appel de requête

Direction : Initiateur -> Cible

Comme pour les actions "Read Request Action" et "Write Request Action", dans cette action, l'initiateur fournit la cible avec :

  • Invoke Requests (Requêtes d'appel) : liste des chemins d'accès aux commandes de cluster, ainsi que des arguments facultatifs des commandes, appelés Command Fields (Champs de commande).
  • Timed Request (Demande temporisée) : indicateur qui indique si cette action fait partie d'une transaction d'appel temporisée.
  • Supprimer la réponse : indicateur indiquant si l'action d'appel de réponse doit être supprimée.
  • ID d'interaction : entier utilisé pour faire correspondre l'action de demande d'appel à l'action de réponse d'appel.

Appeler l'action de réponse

Direction : cible -> initiateur

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

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

Restrictions d'invocation sans délai

L'action Invoke Request peut être un groupcast, mais dans ce cas, l'indicateur Suppress Response doit être défini. L'idée est d'éviter que le réseau ne soit inondé par les réponses simultanées de chaque membre d'un groupe.

Pour activer ce comportement, le chemin d'accès utilisé dans la liste "Invoke Requests" (Appeler les requêtes) peut contenir des groupes ou des caractères génériques, mais uniquement dans le champ "Endpoint" (Point de terminaison). De plus, si l'action est une diffusion de 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é
Figure 2 : Transaction d'appel temporisé

Action de requête programmé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 de réception avec une action de réponse d'état. Une fois que l'initiateur a reçu 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 de requête d'appel décrite précédemment.

Appeler l'action de réponse

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

Restrictions d'invocation programmée

Toutes les commandes d'appel peuvent être appelées sur une interaction chronométrée. Les actions de requête programmée, d'appel de requête et d'appel de réponse sont réservées à Unicast. Elles ne peuvent donc pas être utilisées comme groupcast sur les transactions d'appel programmé.

L'action "Invoke Request" (Appeler la requête) accepte l'utilisation de chemins d'accès avec des groupes et des caractères génériques, mais l'action "Invoke Response" (Appeler la réponse) n'accepte pas l'utilisation de caractères génériques.