Exécution de l’exemple de gestionnaire d’exceptions personnalisé pour la persistance des messages
L’exemple De gestionnaire d’exceptions personnalisées persistantes illustre un gestionnaire générique faiblement couplé qui reçoit des messages d’erreur, extrait les messages Microsoft BizTalk qu’ils contiennent et les écrit sous forme de fichiers disque dans le système de fichiers.
L’exemple montre comment utiliser un gestionnaire d’exceptions personnalisé dans une orchestration. Lorsqu’un processus dans l’orchestration (EAIProcess.odx) rencontre une erreur, le gestionnaire d’exceptions génère et publie un message d’erreur ESB. Ce message d’erreur inclut dans sa charge utile les messages (y compris leurs propriétés de contexte liées à BizTalk) qui étaient « en version d’évaluation » lorsque l’exception s’est produite, ainsi que les instance System.Exception actuels interceptés par le moteur d’orchestration BizTalk. Lorsque cela se produit, un message « Refusé » et un message « Approuvé » sont conservés avec le message d’erreur.
Une deuxième orchestration nommée EAIGenericHandler.odx, qui est déployée de manière découplée et agit comme un gestionnaire d’exceptions personnalisé, s’abonne au code d’erreur spécifique généré dans l’orchestration EAIGenericHandler.odx et consomme le message d’erreur. Ce gestionnaire d’exceptions extrait les messages d’origine (en tant que documents sans type) et les instances System.Exception conservées à l’origine dans le message d’erreur.
L’exemple de gestionnaire d’exceptions personnalisées persistantes de message diffère de l’exemple de gestionnaire d’exceptions personnalisées repair and resubmit car l’orchestration EAIGenericHandler.odx utilisée dans cet exemple n’a pas de dépendance sur les schémas utilisés dans le processus d’orchestration de publication d’erreurs (EAIProcess.odx). Plus précisément, l’orchestration EAIGenericHandler.odx récupère les messages d’origine du message d’erreur en tant que System.Xml. Instances XmlDocument au lieu de messages typés basés sur les schémas utilisés dans l’orchestration EAIProcess.odx. Il retourne également les messages sous forme de collection que le code peut facilement énumérer.
Le gestionnaire d’exceptions personnalisé (EAIGenericHandler.odx) écrit ensuite les messages « Denied » et « Approved » dans l’emplacement du système de fichiers \Source\Samples\Exception Handling\Test\Filedrop\EAIGenericHandler.PostTmpMsg.
En outre, il existe un port d’envoi générique nommé ALL. Exceptions_FILE configuré pour utiliser le pipeline GlobalFaultProcessor installé dans le cadre de Microsoft BizTalk ESB Toolkit Exception Management Framework. Ce port s’abonne à toutes les exceptions dans le système, les messages de routage de messages bizTalk ayant échoué et les messages d’erreur ESB. L’infrastructure de gestion des exceptions les normalise toutes dans un format unique et les sérialise à l’aide d’une instruction de traitement Microsoft InfoPath à l’emplacement \Source\Samples\Gestion des exceptions\Test\Filedrop\All_Exceptions.
Installation
Tous les exemples de gestion des exceptions utilisent le même ensemble de services de base et d’artefacts d’application BizTalk. Par conséquent, vous devez installer les artefacts d’exemples de gestion des exceptions une seule fois pour pouvoir exécuter tous les exemples de gestion des exceptions. Pour plus d’informations sur l’installation des exemples de gestion des exceptions, consultez Installation des exemples de gestion des exceptions.
Exécution de l'exemple d'application
Pour exécuter l’exemple de gestionnaire d’exceptions personnalisées de message persistant
Avant d’exécuter cet exemple pour la première fois, assurez-vous que l’emplacement de réception et l’URL de port d’envoi pointent vers les répertoires appropriés dans le dossier \Source\Samples\Gestion des exceptions\Test\Filedrop. L’emplacement de réception doit spécifier le dossier EAIProcess.RequestPort et l’URL du port d’envoi doit spécifier le dossier EAIGenericHandler.PostTmpMsg.
Si l’application GlobalBank.ESB n’est pas déjà en cours d’exécution, utilisez la console d’administration BizTalk pour la démarrer.
Démarrez l’exemple en copiant l’exemple de fichier nommé Request_EAIGenericHandler.xml, situé dans le dossier \Source\Samples\Exception Handling\Test\Data, dans le dossier spécifié pour le EAIProcess.RequestPort_FILE emplacement de réception : \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.RequestPort.
Ouvrez le dossier nommé EAIGenericHandler.PostTmpMsg (dans le dossier \Source\Samples\Exception Handling\Test\Filedrop\). Le message d’origine s’affiche.
Fonctionnement de l’exemple
Le message que vous envoyez active l’orchestration EAIProcess. Lorsque l’orchestration EAIProcess traite le message, elle tente de diviser 1 par le prix unitaire. Étant donné que le prix unitaire est égal à zéro, une exception de division par zéro se produit. Le code dans le gestionnaire d’événements de l’orchestration intercepte cette exception et crée un message d’erreur. La quantité de commande dans le message étant inférieure à 10, la logique métier indique que cette exception a une valeur de champ FaultCode de 2000.
L’orchestration EAIProcess publie ensuite le message d’erreur dans la boîte de message BizTalk via un port à liaison directe, et l’orchestration se termine.
Une orchestration de gestionnaire d’erreurs personnalisée nommée EAIGenericHandler, qui s’abonne aux messages avec une valeur de champ FaultCode de 2000, récupère le nouveau message d’erreur. Le code dans l’orchestration extrait tous les messages du message d’exception (erreur) et les écrit dans des fichiers disque.