Crear el flujo de mensajes de abanico de entrada de agregación

El flujo de abanico de entrada de agregación recibe las respuestas a los mensajes de petición enviados por el flujo de abanico de salida, y crea un mensaje de respuesta combinado que contiene todas las respuestas recibidas.

Antes de empezar:

Puede incluir el flujo de abanico de salida y de abanico de entrada dentro del mismo flujo de mensajes. Aunque, si lo prefiere, puede crear dos flujos distintos. Para obtener más información sobre las ventajas de configurar flujos de mensajes independientes, consulte Asociar flujos de agregación de mensajes de abanico de salida y de abanico de entrada. No despliegue varias copias del mismo flujo de abanico de entrada para los mismos grupos de ejecución o grupos de ejecución diferentes.

Si no configura el flujo de abanico de salida para que sea transaccional, los valores de tiempo de espera que ha especificado pueden hacer que el mensaje de respuesta combinado se genere antes de que el flujo de abanico de entrada haya recibido todas las respuestas. Para obtener más información, consulte Crear el flujo de mensajes de abanico de salida de agregación.

A continuación puede ver un ejemplo de flujo de abanico de entrada: 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.

Para crear el flujo de mensajes de abanico de entrada:

  1. Vaya a Perspectiva de Desarrollo de aplicaciones de intermediario.
  2. Cree un nuevo flujo de mensajes para proporcionar el proceso del flujo de mensajes de abanico de entrada.
  3. Añada los nodos siguientes en la vista del editor y configure y conéctelos como se describe:
    Nodo de entrada
    El nodo de entrada recibe las respuestas a los múltiples mensajes de petición que se generan a partir del flujo de abanico de salida.

    Este nodo debe ser un nodo de entrada que soporte el modelo de petición/respuesta, por ejemplo un nodo MQInput, o una combinación de estos nodos (dependiendo de los requisitos de las aplicaciones que envíen estas respuestas). La respuesta que reciba cada nodo de entrada debe enviarse a través del mismo protocolo que la petición con la que se corresponde. Por ejemplo, si incluye un nodo MQOutput en el flujo de abanico de salida, la respuesta a esa petición debe recibirla un nodo MQInput en este flujo de abanico de salida.

    1. Seleccione el nodo de entrada para abrir la vista Propiedades, o pulse con el botón derecho del ratón en el nodo y pulse en Propiedades para abrir el diálogo Propiedades. Se visualizarán las propiedades del nodo.
    2. Especifique el origen de los mensajes de entrada para este nodo. Por ejemplo, especifique el nombre de una cola WebSphere MQ en la propiedad Básica Nombre de cola de la que el nodo MQInput recupera los mensajes.
    3. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
    4. Conecte el terminal Out (de salida) del nodo de entrada al terminal In (de entrada) de un nodo AggregateReply.

      Conecte los terminales de este modo para crear la configuración más sencilla; si procede, puede incluir otros nodos entre el nodo de entrada y el nodo AggregateReply. Por ejemplo, tal vez desee almacenar las respuestas con fines de auditoría (en un nodo Warehouse).

    Incluya un solo nodo de entrada que reciba todos los mensajes de respuesta de agregación al principio del flujo de abanico de entrada tal como se ha descrito anteriormente. Si incluye varios nodos de entrada, las hebras iniciadas por un nodo de entrada de respuesta específico pueden completar la agregación y ejecución del flujo de mensajes, mientras el resto está enviando sus mensajes de respuesta al nodo AggregateReply, que pasan a ser susceptibles de exceder el tiempo de espera. Utilice un único nodo de entrada para habilitar el proceso secuencial de respuestas para cada agregación. Especifique instancias adicionales para proporcionar una mayor productividad de proceso en este único nodo, consulte Propiedades configurables del flujo de mensajes.

    Nodo AggregateReply
    El nodo AggregateReply recibe las respuestas entrantes del nodo de entrada a través de su terminal In. El nodo AggregateReply almacena todos los mensajes de respuesta para procesarlos posteriormente.

    Cuando se han recopilado todas las respuestas para un determinado grupo de peticiones de agregación, el nodo AggregateReply crea un mensaje de respuesta agregado y lo propaga a través del terminal Out.

    1. Seleccione el nodo AggregateReply para abrir la vista Propiedades, o pulse con el botón derecho del ratón en el nodo y pulse en Propiedades para abrir el diálogo Propiedades. Se visualizarán las propiedades del nodo.
    2. Establezca la propiedad Nombre de agregación del nodo AggregateReply de modo que identifique esa agregación. Establezca este valor en el mismo valor que ha establecido para la propiedad Nombre de agregación en el nodo AggregateControl correspondiente del flujo de abanico de salida.
    3. Opcional: para retener un mensaje no reconocido antes de propagarlo al terminal Unknown (desconocido), establezca un valor para la propiedad Tiempo de espera de mensaje desconocido. Si está utilizando flujos de abanico de salida y abanico de entrada separados, establezca este valor en un número que no sea cero si el mensaje de control puede retrasarse.
    4. Opcional: para manejar explícitamente los mensajes no reconocidos, conecte el terminal Unknown a otro nodo o secuencia de nodos. Si no conecta este terminal a otro nodo del flujo de mensajes, se descartarán los mensajes propagados a través de este terminal.
    5. Opcional: si ha especificado un valor de tiempo de espera para esta agregación en el nodo AggregateControl y desea manejar explícitamente los tiempos de espera excedidos que se producen antes de que se reciban todas las respuestas, conecte el terminal Timeout (de tiempo de espera) a otro nodo o secuencia de nodos. Las respuestas agregadas parcialmente completas se envían al terminal Timeout si se excede el tiempo de espera. Si no conecta este terminal a otro nodo del flujo de mensajes, se descartarán los mensajes propagados a través de este terminal.
    6. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
    7. Conecte el terminal de salida del nodo AggregateReply al terminal de entrada de un nodo Compute.
    Atención: El terminal de control del nodo AggregateReply se ha dejado de utilizar en la versión 6.0 y, de forma predeterminada, se ignoran todas las conexiones a este terminal (ya sean directas o indirectas). Este cambio maximiza la efectividad de los flujos de agregación y no afecta a la fiabilidad de las agregaciones. Esta configuración proporciona el contenido óptimo.

    Sin embargo, si desea que el nodo AggregateReply reciba en su terminal de control el mensaje de control enviado por el nodo AggregateControl correspondiente en el flujo de abanico de salida, debe realizar las conexiones necesarias como se indica en Crear el flujo de mensajes de abanico de salida de agregación. Mantenga la vía de acceso del nodo AggregateReply al nodo de salida lo más directa posible para maximizar el rendimiento de las agregaciones. No modifique el contenido de este mensaje de control.

    Además, para poder reconocer el terminal Control y las conexiones al mismo, debe habilitar la variable de entorno MQSI_AGGR_COMPAT_MODE. Si elige esta opción, el rendimiento y el comportamiento de las agregaciones de mensajes pueden verse afectados; para obtener una descripción completa de estas implicaciones y de la variable de entorno, consulte Utilizar mensajes de control en flujos de agregación.

    Nodo Compute
    El nodo Compute recibe el mensaje que contiene las respuestas combinadas. Normalmente, el formato de este mensaje combinado no es válido para la salida, ya que el mensaje de respuesta agregado tiene una estructura inusual y no se puede analizar para la corriente de bits que requieren algunos nodos, por ejemplo el nodo MQOutput. Los terminales de salida (Out) y de tiempo de espera (Timeout) siempre propagan un mensaje de respuesta agregado, que siempre requiere un proceso adicional para poder propagarse a un nodo MQOutput. Por lo tanto debe incluir un nodo Compute y configurarlo para crear un mensaje de salida válido.
    1. Seleccione el nodo Compute para abrir la vista Propiedades, o pulse con el botón derecho del ratón en el nodo y pulse en Propiedades para abrir el diálogo Propiedades. Se visualizarán las propiedades del nodo.
    2. Especifique en la propiedad básica Módulo ESQL el nombre del módulo que personaliza la función de este nodo.
    3. Pulse el botón derecho del ratón en el nodo y pulse Abrir ESQL para abrir el archivo ESQL que contiene el módulo para este nodo. El módulo queda resaltado en la vista del Editor ESQL.
    4. Codifique el ESQL para crear un solo mensaje de salida a partir de las respuestas agregadas del mensaje de entrada.

      El mensaje de respuesta agregado se propaga a través del terminal de salida. Se proporciona información sobre la forma de acceder a su contenido en Acceso al contenido de los mensajes combinados.

    5. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
    6. Conecte el terminal de salida del nodo Compute al terminal de entrada del nodo de salida que represente el destino del único mensaje de respuesta.
    Nodo de salida
    Incluya un nodo de salida para el flujo de abanico de entrada. Este nodo puede ser cualquiera de los nodos incorporados, o un nodo de salida definido por el usuario.
    1. Seleccione el nodo de salida para abrir la vista Propiedades, o pulse con el botón derecho del ratón en el nodo y pulse en Propiedades para abrir el diálogo Propiedades. Se visualizarán las propiedades del nodo.
    2. Especifique el destino del mensaje de salida para este nodo. Por ejemplo, especifique en la propiedad básica Nombre de cola el nombre de una cola de WebSphere MQ a la que el nodo MQOutput envía los mensajes.
    3. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
  4. Pulse Control-S o Archivo > Guardar nombre en el menú de la barra de tareas (donde nombre es el nombre de este flujo de mensajes) para guardar el flujo de mensajes y validar su configuración.

Acceso al contenido de los mensajes combinados

El nodo AggregateReply crea una carpeta en el árbol de mensaje combinado debajo de Raíz, llamada ComIbmAggregateReplyBody. Debajo de esta carpeta, el nodo crea una serie de subcarpetas que utilizan los nombres que ha establecido en los nodos AggregateRequest. Estas subcarpetas se llenan con los mensajes de respuesta asociados.

Por ejemplo, los mensajes de petición pueden tener los nombres de carpeta:

  • TAXI
  • HOTEL

El mensaje de respuesta agregado resultante creado por el nodo AggregateReply puede tener una estructura similar a la del ejemplo siguiente:

Éste es un diagrama del árbol del contenido del mensaje creado bajo el elemento ComIbmAggregateReplyBody bajo Raíz. Su contenido está descrito en el texto circundante.

Utilice ESQL dentro de un nodo Compute para acceder a la respuesta de la empresa de taxis utilizando el nombre de correlación siguiente:

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

El nombre de carpeta no tiene que ser exclusivo. Si tiene varias peticiones con el nombre de carpeta TAXI, puede acceder a las diferentes respuestas utilizando la notación de subíndice de matriz, por ejemplo:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
Conceptos relacionados
Agregación de flujo de mensajes
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:52

ac12300_