Las rutinas de salida de usuario permiten que el software personalizado proporcionado por el usuario pueda realizar un seguimiento de los datos pasando a través de los flujos de mensajes en WebSphere Message Brokers.
Las funciones proporcionadas por el usuario pueden invocarse en puntos específicos del ciclo de vida de un mensaje mientras pasa por el flujo de mensajes y pueden invocar funciones de programas de utilidad para consultar información sobre ese punto del flujo y el contenido del ensamblaje de mensajes.
Las rutinas de salida de usuario pueden invocarse cuando se dan uno o más de los siguientes sucesos:
- Fin de unidad de trabajo (UOW) o transacción (COMMIT/ROLLBACK)
- Un mensaje pasa entre dos nodos
- Un mensaje se ha extraído de la cola del origen de entrada.
En el flujo de mensajes básico que se muestra, se pueden realizar seguimientos de mensajes a dos niveles:
- Nivel de transacción
- Nivel de nodo
A nivel de transacción, puede efectuar un seguimiento de los siguientes sucesos:
- Los mensajes se están leyendo en el flujo
- Terminación de la transacción.
A nivel de nodo, puede efectuar un seguimiento de los siguientes sucesos:
- Un mensaje que pasa de un nodo a otro
- Terminación de los procesos para un nodo.
Esto significa que hay cuatro tipos de sucesos, que se producen en la siguiente secuencia:
- Un mensaje se extrae de la cola del origen de entrada (se lee en el flujo)
- El mensaje se propaga al nodo para su proceso
- Se completa el proceso en el nodo
- Fin de la transacción
En el diagrama anterior el nodo MQInput se usa como ejemplo, pero la función puede aplicarse a todos los nodos de entrada, incluidos los definidos por el usuario.
Sin embargo, hay una ligera diferencia entre los nodos incorporados y los nodos definidos por el usuario, en la manera en la que se invocan las rutinas de salida de usuario.
Para los nodos incorporados, la rutina de salida de usuario se invoca lo antes posible después de leer los datos desde el origen exterior.
Para los nodos de entrada definidos por el usuario, la rutina de salida de usuario se invoca justo antes de que el nodo propague el mensaje.
En el ejemplo que se muestra anteriormente, el suceso 4 se transmite al final de la transacción.
La rutina de salida de usuario se invoca una vez la transacción se ha terminado, por tanto el proceso de rutina de salida de usuario no es parte de la transacción.
La rutina de salida de usuario se invoca aunque el flujo no haya completado ningún proceso de transacciones.
Cuando la propiedad del flujo de mensajes Cuenta de confirmaciones es mayor que 1, se da una proporción de muchas a uno entre el suceso 1 y el suceso 4. Esto también se da para casos específicos de ese nodo de entrada en particular; por ejemplo, cuando se selecciona la propiedad Confirmar por grupo de mensajes al configurar un nodo MQInput.
Puede grabar una rutina de salida de usuario para realizar un seguimiento de tantos de estos suceso como se desee. Para cada uno de estos sucesos, los siguientes datos están disponibles para la rutina de salida de usuario.
Todo acceso es sólo de lectura, a no ser que se especifique lo contrario:
- Extraer mensaje de cola:
- Corriente de bits
- Nodo de entrada
- Árbol de entorno (lectura/escritura)
- Mensaje propagado al nodo:
- Árbol de mensaje
- Árbol de entorno local (lectura/escritura)
- Lista de excepciones
- Árbol de entorno (lectura/escritura)
- Nodo de origen
- Nodo de destino
- Proceso en el nodo completado:
- Árbol de mensaje
- Árbol de entorno local (lectura/escritura)
- Lista de excepciones
- Árbol de entorno (lectura/escritura)
- Nodo
- Nodo en sentido ascendente
- Excepción (si hay alguna)
- Fin de la transacción:
- Nodo de entrada
- Excepción si hay alguna
- Árbol de entorno (lectura/escritura)
Pueden registrarse múltiples rutinas de salida de usuario y, si se registran, se invocan en un orden definido (consulte el apartado Mandato mqsichangeflowuserexit). Cualquier cambio que se haga en el ensamblaje de mensaje por una rutina de salida de usuario es visible a rutinas de salida de usuario subsiguientes.
Cuando se invoca la rutina de salida de usuario, se puede consultar la siguiente información:
- Información de flujo de mensajes:
- Nombre de flujo de mensajes
- Nombre de intermediario
- Nombre del gestor de colas del intermediario
- Nombre de grupo de ejecución
- Propiedad cuenta de confirmaciones del flujo de mensajes
- Propiedad intervalo de confirmación del flujo de mensajes
- Propiedad transacción coordinada del flujo de mensajes.
- Información del nodo:
- Nombre de nodo
- Tipo de nodo
- Nombre de terminal
- Propiedades de nodo
- Navegar y leer el ensamblaje de mensaje (mensaje, entorno local, lista de excepciones)
- Navegar y leer/escribir el árbol de entorno.
Las rutinas de salida de usuario se pueden registrar de manera dinámica, sin tener que desplegar de nuevo la configuración.