Ejecución del ejemplo de controlador de excepciones personalizadas de conservación de mensajes
En el ejemplo controlador de excepciones personalizados de persistencia de mensajes se muestra un controlador genérico flexiblemente acoplado que recibe mensajes de error, extrae los mensajes de Microsoft BizTalk que contienen y los escribe como archivos de disco en el sistema de archivos.
En el ejemplo se muestra cómo puede usar un controlador de excepciones personalizado en una orquestación. Cuando un proceso de la orquestación (EAIProcess.odx) encuentra un error, el controlador de excepciones genera y publica un mensaje de error de ESB. Este mensaje de error incluye en su carga los mensajes (incluidas sus propiedades de contexto relacionadas con BizTalk) que estaban "en curso" cuando se produjo la excepción, así como la instancia system.Exception actual detectada por el motor de orquestación de BizTalk. Cuando esto ocurre, un mensaje "Denegado" y un mensaje "Aprobado" se conservan con el mensaje de error.
Una segunda orquestación denominada EAIGenericHandler.odx, que se implementa de forma desacoplada y actúa como controlador de excepciones personalizado, se suscribe al código de error específico generado en la orquestación EAIGenericHandler.odx y consume el mensaje de error. Este controlador de excepciones extrae los mensajes originales (como documentos sin tipo) y las instancias de System.Exception que se conservan originalmente en el mensaje de error.
El ejemplo de controlador de excepciones personalizado persistente de mensajes difiere del ejemplo de controlador de excepciones personalizados de reparación y reenvío en que la orquestación EAIGenericHandler.odx usada en este ejemplo no tiene una dependencia de los esquemas usados en el proceso de orquestación de publicación de errores (EAIProcess.odx). En concreto, la orquestación EAIGenericHandler.odx recupera los mensajes originales del mensaje de error como System.Xml. Instancias xmlDocument en lugar de mensajes con tipo en función de los esquemas usados en la orquestación EAIProcess.odx. También devuelve los mensajes como una colección que el código puede enumerar fácilmente.
El controlador de excepciones personalizado (EAIGenericHandler.odx) escribe los mensajes "Denegado" y "Aprobado" en la ubicación del sistema de archivos \Source\Samples\Exception Handling\Test\Filedrop\EAIGenericHandler.PostTmpMsg.
Además, hay un puerto de envío genérico denominado ALL. Exceptions_FILE configurado para usar la canalización GlobalFaultProcessor instalada como parte del marco de administración de excepciones del kit de herramientas de ESB de Microsoft BizTalk. Este puerto se suscribe a todas las excepciones del sistema, tanto los mensajes de enrutamiento de mensajes con error de BizTalk como los mensajes de error de ESB. El marco de administración de excepciones normaliza todos en un solo formato y los serializa mediante una instrucción de procesamiento de Microsoft InfoPath en la ubicación \Source\Samples\Exception Handling\Test\Filedrop\All_Exceptions.
Instalación
Todos los ejemplos de administración de excepciones usan el mismo conjunto de servicios principales y artefactos de aplicación de BizTalk. Por lo tanto, debe instalar los artefactos de ejemplo de administración de excepciones solo una vez para poder ejecutar todos los ejemplos de administración de excepciones. Para obtener información sobre cómo instalar los ejemplos de administración de excepciones, consulte Instalación de los ejemplos de administración de excepciones.
Ejecución de la aplicación de ejemplo
Para ejecutar el ejemplo del controlador de excepciones personalizado persistente de mensajes
Antes de ejecutar este ejemplo por primera vez, asegúrese de que la ubicación de recepción y la dirección URL del puerto de envío apunten a los directorios adecuados en la carpeta \Source\Samples\Exception Handling\Test\Filedrop. La ubicación de recepción debe especificar la carpeta EAIProcess.RequestPort y la dirección URL del puerto de envío debe especificar la carpeta EAIGenericHandler.PostTmpMsg.
Si la aplicación GlobalBank.ESB aún no se está ejecutando, use la Consola de administración de BizTalk para iniciarla.
Inicie el ejemplo copiando el archivo de ejemplo denominado Request_EAIGenericHandler.xml, ubicado en la carpeta \Source\Samples\Exception Handling\Test\Data, en la carpeta especificada para la EAIProcess.RequestPort_FILE ubicación de recepción: \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.RequestPort.
Abra la carpeta denominada EAIGenericHandler.PostTmpMsg (en la carpeta \Source\Samples\Exception Handling\Test\Filedrop\). Verá el mensaje original.
Cómo funciona el ejemplo
El mensaje que envía activa la orquestación EAIProcess. Cuando la orquestación EAIProcess procesa el mensaje, intenta dividir 1 por el precio unitario. Dado que el precio unitario es cero, se produce una excepción de división por cero. El código del controlador de eventos de la orquestación detecta esta excepción y crea un mensaje de error. La cantidad de pedidos del mensaje es inferior a 10, por lo que la lógica de negocios determina que esta excepción tiene un valor de campo FaultCode de 2000.
A continuación, la orquestación EAIProcess publica el mensaje de error en el cuadro de mensajes de BizTalk a través de un puerto enlazado directo y finaliza la orquestación.
Una orquestación del controlador de errores personalizada denominada EAIGenericHandler, que se suscribe a los mensajes con un valor de campo FaultCode de 2000, recoge el nuevo mensaje de error. El código de la orquestación extrae todos los mensajes del mensaje de excepción (error) y los escribe en archivos de disco.