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

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

Antes de empezar:

Para realizar esta tarea, debe haber completado la tarea siguiente:

Antes de realizar esta tarea, se recomienda también leer la visión general sobre la Agregación de flujo de mensajes.

En función de si el flujo de abanico de salida es o no transaccional y, si no lo es, de los valores de tiempo de espera que ha especificado, es posible que el mensaje de respuesta combinado se genere antes de que el flujo de abanico de entrada reciba todas las respuestas. Consulte Crear el flujo de mensajes de abanico de salida de agregación para obtener más información sobre este tema.

Es posible incluir el flujo de abanico de salida y de abanico de entrada en el mismo flujo de mensajes. Sin embargo, es aconsejable crear dos flujos independientes. No despliegue varias copias del mismo flujo de abanico de entrada en los mismos grupos de ejecución o en grupos de ejecución diferentes. Para obtener 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.

Para revisar un ejemplo de un flujo de abanico de entrada, consulte el ejemplo de Ejemplo Reserva de vuelos que se proporciona con WebSphere Message Broker.

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 diferentes mensajes de petición generados a partir del flujo de mensajes de abanico de salida.

    Deberá 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 (en función de los requisitos de las aplicaciones que envíen estas respuestas). La respuesta que reciba cada nodo de entrada se debe enviar a través del mismo protocolo que la petición a la que corresponde (por ejemplo, si incluye un nodo MQOutput en el flujo de mensajes de abanico de salida, la respuesta a dicha petición debe recibirla un nodo MQInput de este flujo).

    1. Pulse con el botón derecho 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 WebSphere MQ en la propiedad básica Nombre de cola desde la que el nodo MQInput recupera los mensajes.
    3. Opcional: especifique los valores para cualquier otra propiedad que desee configurar para este nodo.
    4. Conecte el terminal de salida del nodo de entrada al terminal de entrada de un nodo AggregateReply.

      Esto representa la configuración más sencilla. Si resulta adecuado puede incluir otros nodos entre el nodo de entrada y el nodo AggregateReply. Por ejemplo, es posible que desee almacenar la petición para fines de auditoría (en un nodo Warehouse).

    Nota: Es aconsejable tener un 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 más arriba. Si utiliza un nodo en lugar de varios se asegurará de que ninguna hebra de nodo de entrada de respuesta específica haga siempre que se complete la agregación y la ejecución del flujo de mensajes, mientras las demás envían los mensajes de respuesta a la Respuesta de agregación, que subsiguientemente se puede elegir para exceder el tiempo de espera. La utilización de un solo nodo de entrada crea un proceso más secuencial de las respuestas para cada agregación que se puede escalar satisfactoriamente utilizando instancias adicionales para proporcionar más potencia de proceso.
    Nodo AggregateReply
    El nodo AggregateReply recibe las respuestas de entrada del nodo de entrada a través de su terminal de entrada. Cada mensaje de respuesta que recibe el nodo AggregateReply se almacena de modo persistente en la base de datos del intermediario.

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

    1. Pulse con el botón derecho el nodo AggregateReply y pulse Propiedades.
    2. Establezca la propiedad Nombre de agregación del nodo AggregateReply de modo que identifique esta agregación en concreto. Establezca este valor en el mismo valor que ha establecido para la propiedad Nombre de agregación del nodo AggregateControl correspondiente del flujo de mensajes de abanico de salida.
    3. Opcional: establezca un valor para Tiempo de espera de mensaje desconocido si desea retener un mensaje no reconocido antes de propagarlo al terminal desconocido. Si está utilizando flujos de mensajes de abanico de salida y flujos de mensajes de abanico entrada independientes, es posible que desee establecer este valor en un número que no sea cero en caso de que se retrase la llegada del mensaje de control.
    4. Opcional: conecte el terminal desconocido a otro nodo o secuencia de nodos si desea manejar de modo explícito los mensajes no reconocidos. Si no desea conectar 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, conecte el terminal de tiempo de espera a otro nodo o secuencia de nodos si desea manejar explícitamente los tiempos de espera que caducan antes de que se hayan recibido todas las respuestas. Las respuestas agregadas parcialmente completas se envían al terminal de tiempo de espera si caduca el temporizador. Si no desea conectar este terminal a otro nodo del flujo de mensajes, se descartarán los mensajes propagados a través de este terminal.
    6. Opcional: especifique los valores para cualquier otra propiedad que desee configurar para este nodo.
    7. Conecte el terminal de salida del nodo AggregateReply al terminal de entrada del nodo Compute.
    Nota: El terminal de control del nodo AggregateReply ha quedado desfasado en la Versión 6.0 y, por omisión, se ignorarán las conexiones a este terminal (directas o indirectas). Esto es para maximizar la eficiencia de los flujos de agregación y no daña la fiabilidad de las agregaciones. Ésta es la configuración óptima.

    Sin embargo, si desea que el nodo AggregateReply reciba en el terminal de control el mensaje de control enviado por el nodo AggregateControl correspondiente en el flujo de abanico de salida, deberá realizar las conexiones necesarias como se describe en Crear el flujo de mensajes de abanico de salida de agregación. Se recomienda que la vía de acceso del nodo AggregateReply al nodo de salida sea lo más directa posible. Si el flujo de abanico de salida se conserva corto, el rendimiento de las agregaciones se ve beneficiado. No modifique el contenido de este mensaje de control.

    Además, para que se reconozcan el terminal de control y las conexiones al mismo, deberá habilitar la variable de entorno MQSI_AGGR_COMPAT_MODE. Sin embargo, la elección de esta opción tiene implicaciones relacionadas con el rendimiento y el comportamiento de las agregaciones de mensaje. 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. Es improbable que este mensaje combinado tenga un formato que sea válido para la salida, porque el mensaje de respuesta agregado tiene una estructura inusual y no se puede convertir en la corriente de bits necesaria para algunos nodos, por ejemplo el nodo MQOutput. Dado que el terminal de salida y tiempo de espera producen siempre un mensaje de respuesta agregado, solicite siempre proceso adicional antes de un nodo MQOutput. Por consiguiente, debe incluir un nodo Compute y configurar este nodo para crear un mensaje de salida válido.
    1. Pulse con el botón derecho 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ásica Módulo ESQL.
    3. Pulse con el botón derecho del ratón y pulse Abrir ESQL para abrir el archivo ESQL que contiene el módulo para este nodo. El módulo se resaltará 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.

      Para obtener información sobre la estructura del mensaje de respuestas agregadas que se propaga por el terminal de salida y sobre cómo acceder a su contenido consulte Acceso al contenido de los mensajes combinados.

    5. Opcional: especifique los 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 representa el destino del mensaje de respuesta individual.
    Nodo de salida
    Incluye un nodo de salida para el flujo de mensajes de abanico de entrada. Puede ser cualquiera de los nodos incluidos o un nodo de salida definido por el usuario.
    1. Pulse con el botón derecho 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 WebSphere MQ en la propiedad básica Nombre de cola a la que el nodo MQOutput envía los mensajes.
    3. Opcional: especifique los valores para cualquier otra propiedad 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 los mensajes combinados

El nodo AggregateReply crea una carpeta en el árbol de mensaje combinados debajo de Raíz, denominada ComIbmAggregateReplyBody. Debajo de esta, crea diferentes carpetas que utilizan los nombres de carpeta que ha establecido en los nodos AggregateRequest. Los mensajes de respuesta asociados se colocan debajo de las mismas.

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

  • TAXI
  • HOTEL

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


Este es un diagrama del árbol del contenido del mensaje agregado creado bajo el elemento ComIbmAggregateReplyBody bajo Raíz. El contenido se describe en el texto que lo acompaña.

Puede utilizar 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 una anotación de subíndice de matriz, por ejemplo:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac12300_