Cuando utilice flujos de agregación, puede encontrar que se producen excepciones. En este tema se indica cómo puede manejarlos.
Antes de empezar:
Para realizar esta tarea, debe haber completado las tareas siguientes:
Si se ha detectado un error en sentido descendente de un nodo AggregateReply, el intermediario genera una excepción. Otro nodo del flujo de mensajes puede generar también una excepción utilizando la sentencia THROW de ESQL. En cualquier caso, cuando se genera una excepción se capta en uno de estos dos sitios:
La tabla siguiente lista los sucesos y lo que sucede a una excepción que se ha generado en sentido descendente del nodo AggregateReply.
Suceso | Mensaje propagado | Terminal de salida | Excepción detectada en |
---|---|---|---|
Llega una respuesta prevista al nodo de entrada y se pasa al terminal de entrada del nodo AggregateReply. Es la última respuesta necesaria para completar una agregación. | El mensaje de respuesta agregado que contiene todas las respuestas | De salida | Nodo de entrada |
Llega una respuesta imprevista al nodo de entrada y se pasa al nodo AggregateReply. No se reconoce como una respuesta válida y la propiedad Tiempo de espera de mensaje desconocido se establece en 0. | Mensaje recibido | Desconocido | Nodo de entrada |
Se produce un tiempo de espera excedido debido a que no han llegado todavía todas las respuestas para una agregación. | Se ha recibido el mensaje de respuesta agregado que contiene todas las respuestas | Tiempo de espera | Nodo AggregateReply |
Se produce un tiempo de espera desconocido debido a que el mensaje retenido no se ha identificado como una respuesta válida. | Mensaje retenido | Desconocido | Nodo AggregateReply |
Se ha detectado una agregación como completa en algún momento que no era el momento en que ha llegado la última respuesta. | El mensaje de respuesta agregado que contiene todas las respuestas | De salida | Nodo AggregateReply |
Si desea manejar los errores que se producen en flujos de agregación, debe captar estas excepciones en todas las instancias de cada uno de estos nodos del flujo de mensajes. Para hacerlo:
El ejemplo ESQL siguiente muestra cómo puede añadir una cabecera MQMD y pasar las respuestas que ha recibido el nodo AggregateReply:
-- Añadir MQMD SET OutputRoot.MQMD.Version = 2; . -- Incluir respuestas consolidadas en el mensaje de salida SET OutputRoot.XML.Data.Parsed = InputRoot.ComIbmAggregateReplyBody; .
Si desea propagar la información acerca de la excepción en el mensaje de salida, también debe establecer la propiedad Modalidad de cálculo del nodo Compute en un valor que incluya Excepción.