Transacciones de flujo de mensajes

Un flujo de mensajes puede ser de dos tipos:
Flujos de mensajes coordinados
Aseguran que todas las actualizaciones de recursos se confirmen o restituyan juntas en una sola transacción.
Flujos de mensajes no coordinados
Permiten que las actualizaciones de recursos tengan lugar de forma independiente; las actualizaciones no se ven afectadas por el éxito o fracaso global del flujo de mensajes.

Flujos de mensajes coordinados

Puede configurar un flujo de mensajes que incluya la interacción con una base de datos externa u otro recurso recuperable para que todo el proceso del flujo de mensajes se coordine en una sola transacción global. Esta coordinación asegura que todo el proceso se complete satisfactoriamente o que no se realice proceso alguno. La transacción se confirma (si todo el proceso es satisfactorio) o restituye (si al menos una parte del proceso no es satisfactoria). Por lo tanto, todos los recursos afectados (colas, bases de datos, etcétera) se mantienen en un estado coherente y se conserva la integridad de datos.

Las actualizaciones que realiza un flujo de mensajes coordinado se confirman cuando el flujo procesa el mensaje de entrada satisfactoriamente. Las actualizaciones se restituyen si se cumplen las dos condiciones siguientes:
  • Cualquier nodo del flujo genera una excepción que sólo capta el nodo de entrada
  • El terminal de captación (Catch) no está conectado

Para configurar un flujo de mensajes como coordinado, establezca la propiedad Coordinado en el flujo de mensajes.

Para algunos nodos de entrada como, por ejemplo, los nodos MQInput o SCADAInput, establezca la propiedad Modalidad de transacción de los nodos del flujo en Automática. La opción Automática hace que los mensajes pasen a formar parte de la transacción global, y marca el flujo de mensajes como transaccional si el mensaje de entrada es persistente, o como no coordinado si el mensaje de entrada no es persistente. Los nodos subsiguientes del flujo que establecen la propiedad Modalidad de transacción en Automática se incluyen en la transacción global si el nodo de entrada marca el flujo como transaccional.

La coordinación de transacciones de flujos de mensajes la proporciona WebSphere MQ en sistemas distribuidos y RRS en sistemas z/OS. Los flujos de mensajes siempre están coordinados globalmente en z/OS, independientemente del valor de la propiedad Coordinado del flujo de mensajes.

Flujos de mensajes no coordinados

Los flujos no coordinados son flujos para los que no se ha establecido la propiedad Coordinado. Las actualizaciones en los recursos utilizados por un flujo no coordinado las gestionan los gestores de recursos independientes. Algunos gestores de recursos, por ejemplo WebSphere MQ, permiten que las actualizaciones se realicen de forma no transaccional o como parte de una transacción específica de recurso. Otros gestores de recursos, por ejemplo gestores de bases de datos, utilizan siempre una transacción específica de recurso. Una transacción específica de recurso es una transacción con un ámbito que está limitado a los recursos que son propiedad de un solo gestor de recursos, por ejemplo un gestor de bases de datos o de colas.

Las transacciones específicas de recurso se utilizan normalmente cuando sólo se utiliza un tipo de recurso recuperable en un flujo. Un ejemplo de flujo de este tipo sería uno que contenga un nodo MQInput y un nodo MQOutput, pero que no acceda a ninguna base de datos. No utilice transacciones específicas de recurso cuando exista más de un recurso y deba mantenerse la integridad de datos.

Las actualizaciones que se realizan en un recurso al que se accede de forma no transaccional se confirman inmediatamente. Un nodo MQInput que esté configurado para ser no transaccional elimina los mensajes de la cola inmediatamente; si el flujo falla; los mensajes se pierden.

Establezca la propiedad Modalidad de transacción en Automática para que algunos nodos de entrada (como, por ejemplo, MQInput o SCADAInput) formen parte de una transacción dependiendo de la persistencia del mensaje de entrada. Si el mensaje de entrada es persistente, los mensajes pasan a formar parte de la transacción, y el flujo se marca como transaccional. Si el mensaje no es persistente, el flujo se marca como no transaccional.

El siguiente ejemplo muestra el uso de las transacciones coordinadas globalmente y las diferencias en el flujo de mensajes cuando las actualizaciones de base de datos están coordinadas (el flujo principal) y cuando no lo están (el flujo de errores). Los ejemplos sólo pueden verse cuando se utiliza el centro de información que está integrado en el Kit de herramientas de Message Brokers.
Conceptos relacionados
Visión general de flujos de mensajes
Tareas relacionadas
Crear un flujo de mensajes
Definir el contenido del flujo de mensajes
Configurar flujos de mensajes coordinados globalmente
Manejar errores en flujos de mensajes
Referencia relacionada
Nodos incorporados
Conexiones de base de datos para flujos de mensajes coordinados
Soporte de base de datos para flujos de mensajes coordinados
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:53:33

ac00645_