Cuando utilice flujos de agregación, pueden producirse excepciones.
Realice las siguientes tareas:
Si se ha detectado un error en sentido descendente de un nodo AggregateReply, el intermediario emite una excepción. Otro nodo del flujo de mensajes puede emitir también una excepción utilizando la sentencia THROW de ESQL. En cualquier caso, cuando se emite una excepción se capta en uno de estos dos sitios:
La tabla siguiente lista sucesos y describe lo que le 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. La respuesta es la última que es necesaria para completar una agregación. | Un 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 un mensaje de respuesta agregado que contiene todas las respuestas que se han recibido | Tiempo de espera | Nodo AggregateReply |
Se produce un tiempo de espera desconocido debido a que el mensaje retenido no fue 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. | Un mensaje de respuesta agregado que contiene todas las respuestas | De salida | Nodo AggregateReply |
Para 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.
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.XMLNS.Data.Parsed = InputRoot.ComIbmAggregateReplyBody;
.
Para propagar la información acerca de la excepción en el mensaje de salida, establezca la propiedad Modalidad de cálculo del nodo Compute a un valor que incluya Excepción.