Manejar excepciones en flujos de agregación

Cuando utilice flujos de agregación, pueden producirse excepciones.

Antes de empezar:

Realice las siguientes tareas:

Manejo de excepciones

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:

  • El nodo de entrada al que llegan las respuestas
  • El nodo AggregateReply

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.

  1. Vaya a la Perspectiva de Desarrollo de aplicaciones de intermediario.
  2. Abra el flujo de mensajes con el que desea trabajar.
  3. Para manejar estas excepciones por su cuenta, conecte el terminal de captación de cada nodo de entrada y el nodo AggregateReply a una secuencia de nodos que maneje el error que se ha producido.

    Si desea un método unificado para manejar errores, conecte los terminales de captación de todos estos nodos a un sola secuencia de nodos o cree un subflujo que maneje errores con coherencia de un solo modo y asocie dicho subflujo a cada terminal de captación.

  4. Si desea que el intermediario maneje estas excepciones utilizando el manejo de errores predeterminado, no conecte los terminales de captación de estos nodos.
Si conecta el terminal de captación del nodo AggregateReplyy desea que el mensaje de salida se propague a través de este terminal a un destino desde el que puede recuperarse para su proceso posterior, debe incluir un nodo Compute en el flujo de captación para proporcionar cualquier proceso específico del transporte. Por ejemplo, debe añadir una cabecera MQMD si desea colocar el mensaje en una cola WebSphere MQ desde un nodo MQOutput.

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.

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:53

ac12340_