Création d'abonnements de réception pour les orchestrations appelées
Bien que vous puissiez passer des messages en tant que paramètres via la forme Démarrer l’orchestration lorsque vous démarrez une orchestration, dans certains scénarios, vous pouvez envoyer des messages de l’orchestration de l’appelant à l’orchestration appelée après l’appel. C'est par exemple le cas si vous ne savez pas, au moment de l'appel, quels messages transmettre, ou si d'autres orchestrations ont besoin d'envoyer des messages de manière dynamique à l'orchestration appelée.
Pour envoyer un message à une orchestration appelée, il faut transmettre une corrélation qui permettra à l'orchestration appelée de créer l'abonnement par le biais duquel recevoir le message. Toutefois, se contenter de transmettre la corrélation ne suffit pas. Si vous procédez ainsi, les messages envoyés depuis l'orchestration de l'appelant à l'orchestration appelée généreront l'erreur « Impossible d'acheminer le message publié, car aucun abonné n'a été trouvé », pour les raisons suivantes :
L'orchestration appelée présente une condition d'engorgement.
Il n'existe aucun point de validation qui puisse permettre à l'orchestration appelée d'envoyer l'abonnement à la base de données MessageBox pour le routage et recevoir les messages.
Vous pouvez résoudre ce problème de la manière suivante :
Dans l'orchestration de l'appelant, vous disposez d'une réception avec activation pour recevoir le message. Une fois que vous avez reçu le message dans l’orchestration de l’appelant, initialisez le jeu de corrélations, puis passez le jeu de corrélations et un port de réception lié automatiquement via la forme Démarrer l’orchestration . Le port ainsi transmis devient un port d'envoi dans l'orchestration appelée, grâce auquel le message pourra être renvoyé pour permettre la synchronisation avec l'orchestration de l'appelant.
Dans l'orchestration appelée, renvoyez un message à l'orchestration de l'appelant par le biais du port d'auto-corrélation. Cette opération effectue une synchronisation avec l'orchestration de l'appelant, laquelle permet d'éviter les risques d'engorgement et permet de fournir un point de validation lors de la création de l'abonnement de réception dans la base de données MessageBox pour le routage dans l'orchestration appelée.
L'orchestration de l'appelant reçoit le message via le port d'auto-corrélation et se synchronise avec l'orchestration appelée. Notez que les réceptions du port d'auto-corrélation ne requièrent pas de suivis. Vous pouvez désormais envoyer en toute sécurité des messages entre l'orchestration de l'appelant et l'orchestration appelée, et cette dernière recevra les messages basés sur la corrélation.
Bien que la méthode précitée soit efficace, il existe une meilleure méthode. Elle consiste à transmettre le message qui initialise la corrélation sur laquelle se baser. Lors de la synchronisation des orchestrations de l'appelant et appelée via un port d'auto-corrélation, il est recommandé de toujours transmettre le message permettant d'initialiser les corrélations. La procédure suivante constitue la méthode la plus fiable et la plus performante :
Dans l'orchestration de l'appelant, vous disposez d'une réception avec activation pour recevoir le message. Après avoir reçu le message, transmettez un message et un port de réception de liaison directe auto-corrélatant via la forme Démarrer l’orchestration . Le message transmis servira à initialiser la corrélation dans l'orchestration appelée. Le port ainsi transmis devient un port d'envoi dans l'orchestration appelée, grâce auquel le message pourra être renvoyé pour permettre la synchronisation avec l'orchestration de l'appelant.
Dans l'orchestration appelée, initialisez la corrélation et renvoyez un message à l'orchestration de l'appelant. Cette opération effectue une synchronisation avec l'orchestration de l'appelant, laquelle permet d'éviter les risques d'engorgement et permet de fournir un point de validation lors de la création de l'abonnement de réception dans la base de données MessageBox pour le routage dans l'orchestration appelée.
L'orchestration de l'appelant reçoit le message via le port d'auto-corrélation et se synchronise avec l'orchestration appelée. Notez que le port auto-corrélatant reçoit n’a pas besoin d’abonnés de corrélation. Vous pouvez désormais envoyer en toute sécurité des messages entre l'orchestration de l'appelant et l'orchestration appelée, et cette dernière recevra les messages basés sur la corrélation.
Voir aussi
Utilisation des corrélations dans les orchestrations
Utilisation des ports d'autocorrélation à liaison directe