Recuperación de transacciones en IBM MQ .NET

En esta sección se describe el proceso de recuperación de transacciones en IBM® MQ .NET XA utilizando la modalidad gestionada.

Acerca de esta tarea

En el proceso de transacciones distribuidas, las transacciones se pueden completar correctamente, pero puede haber casos en los que una transacción podría fallar por muchas razones. Estas razones pueden incluir una anomalía del sistema, una anomalía de hardware, un error de red, datos incorrectos o no válidos, errores de aplicación o desastres naturales o provocados por el hombre. Es imposible evitar completamente los errores de transacción. El sistema de transacciones distribuidas tiene que ser capaz de manejar estos fallos. Tiene que ser capaz de detectar y corregir errores cuando se produzcan. Este proceso se conoce como Recuperación de transacciones.

Un aspecto importante del procesamiento de transacciones distribuidas consiste en recuperar las transacciones incompletas o dudosas. Es fundamental ejecutar la recuperación mientras la unidad de trabajo de una determinada transacción se mantiene bloqueada hasta que se recupera. Microsoft.NET de su biblioteca de clases System.Transactions proporciona la opción para recuperar transacciones incompletas/dudosas. Este soporte de recuperación espera del gestor de recursos que mantenga registros de las transacciones y ejecute la recuperación cuando sea necesario.

En el modelo de recuperación de transacciones de Microsoft .NET , el Gestor de transacciones (System.Transactions, o Microsoft Distributed Transaction coordinator (MS DTC), o ambos), inicia, coordina y controla la recuperación de transacciones. Los gestores de recursos basados en el protocolo OLE Tx (el protocolo Microsoft XA) proporcionan las opciones para configurar el DTC para controlar, coordinar y controlar la recuperación de los mismos. Para ello, los gestores de recursos tienen que registrar XA_Switch en MS DTC mediante la interfaz nativa.

XA_Switch proporciona los puntos de entrada de las funciones XA como, por ejemplo, xa_start, xa_end y xa_recover en el gestor de recursos al coordinador de transacciones distribuidas (DTC).

Recuperación utilizando el coordinador de transacciones distribuidas (DTC) de Microsoft :

El coordinador de transacciones distribuidas de Microsoft proporciona dos tipos de procesos de recuperación.

Recuperación en frío

La recuperación en frío se lleva a cabo si el proceso del gestor transaccional falla mientras hay abierta una conexión con un gestor de recursos XA. Cuando se reinicia el gestor de transacciones, lee sus registros cronológicos y restablece la conexión con el gestor de recursos XA, y luego inicia la recuperación.

Recuperación en caliente

La recuperación en caliente se realiza si el gestor de transacciones permanece activo mientras falla su conexión con el gestor de recursos XA porque fallan este último o la red. Tras el fallo, el gestor de transacciones intenta periódicamente reconectarse con el gestor de recursos XA. Cuando se restablece la conexión, el gestor de transacciones inicia la recuperación XA.

El espacio de nombres de System.Transactions proporciona la implementación gestionada de transacciones distribuidas basadas en MS DTC como gestor de transacciones. Proporciona funciones similares a las de la interfaz nativa de MS DTC, pero en un entorno completamente gestionado. La única diferencia está en la recuperación de transacciones. System.Transactions espera de los gestores de recursos que se hagan cargo de la recuperación por sí mismos y luego coordina con los gestores de transacciones (MS DTC). El gestor de recursos tiene que solicitar la recuperación de una determinada transacción incompleta y luego el gestor de transacciones lo acepta y coordina basándose en el resultado real de dicha transacción.