Creación de un flujo de abanico de entrada de agregación

El flujo de abanico de entrada de agregaciones recibe las respuestas a los mesajes de solicitud que ha enviado el flujo ramificado y crea un mensaje de respuesta combinado que contiene todas las respuestas recibidas.

Antes de empezar:

Para llevar a cabo esta tarea debe haber completado la siguiente:

En función de los valores de tiempo de espera que se han especificado, el mensaje de respuesta combinado puede generarse antes de que el flujo de abanico de entrada reciba todas las respuestas.

Para revisar un ejemplo de un flujo de abanico de entrada, consulte el ejemplo Línea aérea que se proporciona con WebSphere Business Integration Message Broker.

Para crear el flujo de abanico de entrada:

  1. Cambie a la perspectiva Desarrollo de aplicaciones de intermediario.
  2. Cree un flujo de mensajes para proporcionar el proceso de abanico de entrada.
  3. Añada los siguientes nodos en la vista de editor, configúrelos y conéctelos como se describe:
    Nodo Input
    El nodo de entrada recibe las respuestas da varios mensajes de solicitud generados desde el flujo ramificado.

    Éste debe ser un nodo de entrada que dé soporte al modelo de petición/respuesta. Puede utilizar los nodos incorporados MQeInput y MQInput, o un nodo de entrada definido por el usuario que dé soporte a la petición/respuesta, o a una mezcla de estos nodos (en función de los requisitos de las aplicaciones que envían estas respuestas). La respuesta recibida por cada nodo de entrada debe enviarse por el mismo protocolo que la petición a la que corresponde (por ejemplo, si incluye un nodo MQOutput en un flujo ramificado, la respuesta a dicha petición la debe recibir un nodo MQInput en este flujo).

    1. Pulse el botón derecho del ratón en el nodo de entrada y pulse Propiedades.
    2. Especifique el origen de los mensajes de entrada para este nodo. Por ejemplo, especifique el nombre de una cola de WebSphere MQ en la propiedad Básico Nombre de cola de la que el nodo MQInput recupera mensajes.
    3. Opcional: especifique valores para todas las propiedades que desee configurar para este nodo.
    4. Conecte el terminal de salida del nodo de entrada en el terminal de entrada de un nodo AggregateReply.

      Esto representa la configuración más simple; si procede, puede incluir otros nodos entre el nodo de entrada y el nodo AggregateReply. Por ejemplo, es posible que desee almacenar las respuestas para fines de auditoría (en un nodo Warehouse).

    Nodo AggregateReply
    El nodo AggregateReply recibe las respuestas de entrada desde el nodo de entrada a través de su terminal de entrada. Cada mensaje de respuesta recibido por el nodo AggregateReply se almacena de forma permanente en la base de datos del intermediario.

    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 por el terminal de salida.

    1. Pulse el botón derecho del ratón en el nodo AggregateReply y pulse Propiedades.
    2. Establezca la propiedad Nombre de agregación del nodo AggregateReply de modo que identifique esta agregación. Establezca este valor de modo que sea el mismo valor establecido para la propiedad Nombre de agregación en el nodo AggregateControl correspondiente del flujo ramificado.
    3. Opcional: establezca un valor para Tiempo de espera de mensaje desconocido si desea retener un mensaje no reconocido antes de que se propague al terminal desconocido. Si utiliza flujos ramificados y de abanico de entrada distintos, es posible que desee establecer este valor en un número distinto de cero, en caso de que se produzcan demoras en la llegada del mensaje de control.
    4. Opcional: conecte el terminal desconocido a otro nodo o secuencia de nodos si desea manejar de forma explícita mensajes no reconocidos. Si no conecta este terminal a otro nodo en el flujo de mensajes, se descartan 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, conecte el terminal de tiempo de espera a otro nodo o a otra secuencia de nodos si desea manejar de forma explícita los tiempos de espera que caduquen antes de que se reciban las respuestas. Las respuestas agregadas parcialmente completas se envían al terminal de tiempo de espera si el temporizador caduca. Si no conecta este terminal a otro nodo en el flujo de mensajes, se descartan los mensajes propagados a través de este terminal.
    6. Opcional: especifique valores para todas las propiedades que desee configurar para este nodo.
    7. Conecte el terminal de salida del nodo AggregateReply al terminal de entrada de un nodo Compute.

    El nodo AggregateReply también recibe en su terminal de control el mensaje de control que ha enviado el correspondiente nodo AggregateControl en el flujo ramificado (directa o indirectamente, como se describe en Asociación de flujos de agregaciones ramificados y de abanicos de entrada). No modifique el contenido de este mensaje de control.

    Nodo Compute
    El nodo Compute recibe el mensaje que contiene las respuestas combinadas. Es poco probable que este mensaje combinado esté en un formato válido para la salida y se debe configurar este nodo de modo que cree un mensaje de salida válido.
    1. Pulse el botón derecho del ratón en el nodo Compute y pulse Propiedades.
    2. Especifique el nombre del módulo ESQL que personaliza la función de este nodo en la propiedad Básico Módulo ESQL.
    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 aparece resaltado en la vista del editor de ESQL.
    4. Escriba código ESQL para crear un único mensaje de salida de las respuestas agregadas en el mensaje de entrada.

      La estructura del mensaje de respuesta agregado que se propaga a través del terminal de salida y la información de cómo se puede acceder a su contenido se proporciona en Acceso al contenido de mensaje combinado.

    5. Opcional: especifique valores para todas las propiedades que desee configurar para este nodo.
    6. Conecte el terminal de salida del nodo Compute al terminal de entrada del nodo de salida que representa el destino del único mensaje de respuesta.
    Nodo Output
    Incluya un nodo de salida para el flujo de abanico de entrada. Éste puede ser cualquiera de los nodos incorporados o un nodo de salida definido por el usuario.
    1. Pulse el botón derecho del ratón en el nodo de salida y pulse Propiedades.
    2. Especifique el destino del mensaje de salida para este nodo. Por ejemplo, especifique el nombre de una cola de WebSphere MQ en la propiedad Básico Nombre de cola a la que el nodo MQOutput envía mensajes.
    3. Opcional: especifique valores para todas las propiedades que desee configurar para este nodo.
  4. Pulse Control-S para guardar el flujo de mensajes y validar su configuración.

Acceso al contenido de mensaje combinado

El nodo AggregateReply crea una carpeta en el árbol de mensajes combinado debajo del directorio raíz, denominado ComIbmAggregateReplyBody. Debajo de éste, crea varias carpetas con los nombres de carpetas que ha establecido en los nodos AggregateRequest. Los mensajes de respuesta asociados se transfieren debajo.

Por ejemplo, los mensajes de solicitud tienen nombres de carpeta:

  • TAXI
  • HOTEL

El mensaje de respuesta agregado resultante creado por el nodo AggregateReply puede tener una estructura parecida a la que se muestra a continuación:


Se trata de un diagrama del árbol para el contenido de mensaje agregado creado bajo el elemento ComIbmAggregateReplyBody debajo del directorio raíz. Su contenido se describe en el texto que lo rodea.

Puede utilizar un nodo Compute para acceder a la respuesta de la empresa taxi mediante el siguiente nombre de correlación:

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 respuestas separada utilizando la notación de subíndice de matriz, por ejemplo:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz

Conceptos relacionados
Flujos de mensajes
Agregación de flujos de mensajes
Nodos de entrada definidos por el usuario
Nodos de salida definidos por el usuario

Tareas relacionadas
Configuración de flujos de agregación
Creación del flujo ramificado de agregaciones
Asociación de flujos de agregaciones ramificados y de abanicos de entrada
Configuración de tiempos de espera para la agregación
Utilización de varios nodos AggregateControl
Manejo de excepciones y puntos muertos de base de datos en flujos de agregaciones
Diseño de un flujo de mensajes
Creación de un flujo de mensajes
Definición del contenido del flujo de mensajes
Desarrollo de extensiones definidas por el usuario

Referencia relacionada
Nodo AggregateControl
Nodo AggregateReply
Nodo AggregateRequest
Nodo Compute
Nodo MQeInput
Nodo MQeOutput
Nodo MQInput
Nodo MQOutput