Introducción a las unidades de trabajo
Este tema introduce y define los conceptos generales de unidad de trabajo, confirmación, retroceso y punto de sincronización. También contiene dos escenarios que ilustran unidades de trabajo globales.
Cuando un programa coloca mensajes en colas dentro de una unidad de trabajo, dichos mensajes se hacen visibles a otros programas sólo cuando el programa confirma la unidad de trabajo. Para confirmar una unidad de trabajo, todas las actualizaciones deben realizarse satisfactoriamente para mantener la integridad de los datos.
Si el programa detecta un error y decide no hacer permanente la operación de transferencia, puede restituir la unidad de trabajo. Cuando un programa realiza una restitución, IBM® MQ restaura las colas eliminando los mensajes que esa unidad de trabajo ha puesto en las colas.
Asimismo, cuando un programa obtiene mensajes de una o más colas dentro de una unidad de trabajo, dichos mensajes permanecen en las colas hasta que el programa confirma la unidad de trabajo, pero no pueden ser recuperados por otros programas. Los mensajes se suprimen permanentemente de las colas cuando el programa confirma la unidad de trabajo. Si el programa realiza una copia de seguridad de la unidad de trabajo, IBM MQ restaura las colas haciendo que los mensajes disponibles sean recuperados por otros programas.
La decisión de confirmar o restituir las modificaciones se toma, en el caso más sencillo, al final de una tarea. No obstante, puede ser más útil para una aplicación sincronizar las modificaciones de datos en otros puntos lógicos de una tarea. Estos puntos lógicos se denominan puntos de sincronización y el período que dura el proceso de un conjunto de actualizaciones entre dos puntos de sincronización se denomina unidad de trabajo. Algunas llamadas MQGET y MQPUT pueden formar parte de una sola unidad de trabajo.
- Unidades de trabajo locales
- Son aquellas en las que las únicas acciones se ponen a, y se obtienen de, las colas de IBM MQ , y la coordinación de cada unidad de trabajo se proporciona dentro del gestor de colas utilizando un proceso de compromiso de una sola fase.
Utilice unidades locales de trabajo cuando los únicos recursos que se van a actualizar son las colas gestionadas por un único gestor de colas de IBM MQ. Las actualizaciones se confirman utilizando el verbo MQCMIT o se restituyen utilizando MQBACK.
No hay ninguna tarea de administración del sistema, distinta de la gestión del registro, implicada en la utilización de unidades de trabajo locales. En sus aplicaciones, donde utiliza llamadas MQPUT y MQGET con MQCMIT y MQBACK, intente utilizar las opciones MQPMO_SYNCPOINT y MQGMO_SYNCPOINT. (Para obtener información sobre la gestión de registros, consulte Gestión de archivos de registro.)
- Unidades de trabajo globales
- Son aquellas en las que también se actualizan otros recursos, como tablas de una base de datos relacional. Cuando esté
implicado más de un gestor de recursos, necesitará un software
gestor de transacciones que utilice un proceso de confirmación
en dos fases para coordinar la unidad de trabajo global.
Utilice unidades de trabajo globales cuando también necesite incluir actualizaciones en el software del gestor de bases de datos relacionales, como por ejemplo Db2®, Oracle, Sybasey Informix®.
Existen varios escenarios posibles para el uso de unidades de trabajo globales. A continuación se muestran dos escenarios documentados:- En el primero, el gestor de colas actúa él mismo como gestor de transacciones. En este escenario, los verbos MQI controlan las unidades de trabajo globales; se inician en aplicaciones utilizando el verbo MQBEGIN y luego se confirman utilizando MQCMIT o se restituyen utilizando MQBACK.
- En el segundo, el rol de gestor de transacciones lo realiza otro software, como TXSeries®, Encina o Tuxedo. En este escenario, se utiliza una API proporcionada por el software gestor de transacciones para controlar la unidad de trabajo (por ejemplo, EXEC CICS® SYNCPOINT para TXSeries ).