2 votes

Corrélation dans BizTalk

J'ai 2 orchestrations dans mon projet et 2 schémas (le premier pour les requêtes, le second pour les réponses). Orchestration 1 a une Receive (Activating=true). Il reçoit une requête et l'achemine vers Orchestration 2 . Ce dernier construit une requête vers un service web, qui répond, attend 2 minutes et envoie ensuite une nouvelle requête à mon service BizTalk. Les deux projets utilisent les mêmes schémas, un Request et un Response schémas.

Orchestration 2 utilise un ensemble de corrélations qui est initialisé dans un Send qui envoie une requête au service web. En outre, il est possible d'utiliser le service web, Orchestration 2 a une Receive en attente d'un message dont la corrélation a été définie précédemment dans la rubrique Send forme.

Voici le diagramme de séquence : enter image description here

Et il y a le Orchestration 2 : enter image description here

Send_1 y Receive_2 ont mis en place des propriétés de corrélation.

Le problème est que lorsqu'un webservice envoie la requête 2 (voir le diagramme ci-dessus) à mon service biztalk, il génère une erreur disant "Le message a trouvé plusieurs abonnements à des réponses à des demandes. Un message ne peut être acheminé que vers un seul abonnement de réponse à une demande." Comment cela est-il possible si j'ai établi la corrélation ? Je m'attendais à ce que la demande 2 soit acheminée vers le serveur Orchestration 2 parce qu'il a un récepteur avec corrélation.

3voto

Maxime Labelle Points 1786

Le message d'erreur est correct.

Lorsqu'une demande est envoyée par le service Web, elle est acheminée vers la forme de réception d'activation d'Orchestration2.

Mais comme la corrélation est effective, cela crée un abonnement supplémentaire, ce qui explique pourquoi la demande devrait également être acheminée vers la troisième forme de réception dans Orchestration2.

Si vous ne pouvez pas distinguer les schémas de demande, vous devez utiliser une condition supplémentaire pour activer Orchestration2. Vous pouvez, par exemple, filtrer la demande provenant de l'Orchestration1 avec des filtres supplémentaires basés sur les propriétés du contexte.

Vous remarquerez que l'une des requêtes provient d'un adaptateur WCF ou SOAP, alors que la première n'en provient pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X