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

El flujo de mensajes de abanico de salida de agregación recibe el mensaje de entrada inicial y lo reestructura para presentar un número de peticiones a un número de aplicaciones de destino.

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.

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. 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 salida, consulte el ejemplo de Ejemplo Reserva de vuelos que se proporciona con WebSphere Message Broker.

Para crear el flujo de mensajes de abanico de salida:

  1. Vaya a Perspectiva de Desarrollo de aplicaciones de intermediario.
  2. Cree un nuevo flujo de mensajes para proporcionar el proceso de mensajes de abanico de salida.
  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 un mensaje de entrada desde el que se generan varios mensajes de petición. Esto puede llevarse a cabo en uno de los nodos incluidos o en un nodo de entrada definido por el usuario.
    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 Nombre de cola de la propiedad básica desde la que el nodo MQInput recupera los mensajes.
    3. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo. Se recomienda establecer la Modalidad de transacción de propiedades avanzadas en el valor por omisión, Sí, para asegurarse de que los mensajes de petición agregados se ponen bajo el punto de sincronización. Esto evitará una situación en la que el nodo AggregateReply recibe mensajes de respuesta antes de haber recibido el mensaje de control informándole de la instancia de agregación. Al poner el flujo de diseminación bajo el control de transacción, se asegurará de que el flujo de diseminación se complete antes de que los mensajes de respuesta lleguen a AggregateReply.
    4. Conecte el terminal de salida del nodo de entrada al terminal de entrada de un nodo AggregateControl.

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

    5. Opcional: Si los flujos de abanico de salida y de abanico de entrada se combinan en un flujo de mensajes, es aconsejable modificar la propiedad Modalidad de orden en la pestaña Avanzadas. Seleccione la opción Por orden de cola y asegúrese de que la opción Orden lógico también esté seleccionada. Esto fuerza que el nodo de entrada tenga una sola hebra para mantener el orden lógico de los mensajes que llegan en la cola. Esto hace que las hebras de instancia adicionales que deje disponibles se compartan sólo entre los nodos de entrada de abanico de entrada para mejorar el rendimiento de la agregación. Si los flujos de abanico de entrada y de abanico de salida están en flujos de mensajes independientes, este paso no es necesario porque puede dejar hebras adicionales disponibles específicamente para el flujo de abanico de entrada.
    Nodo AggregateControl
    El nodo AggregateControl actualiza el Entorno local asociado al mensaje de entrada con la información que requiere el nodo AggregateRequest.
    1. Pulse con el botón derecho el nodo AggregateControl y pulse Propiedades.
    2. Establezca la propiedad Nombre de agregación del nodo AggregateControl de modo que identifique esta agregación en concreto. Se utiliza posteriormente para asociar este nodo AggregateControl con un nodo AggregateReply específico. El Nombre de agregación que especifique debe tener un contexto exclusivo dentro de un intermediario.
    3. Opcional: establezca la propiedad Tiempo de espera de modo que especifique cuánto tiempo espera el intermediario a que lleguen las respuestas antes de llevar a cabo algún tipo de acción (lo que se describe en Establecer valores de tiempo de espera para agregación).

      Si no se establece un tiempo de espera excedido en el nodo AggregateControl las peticiones de agregación almacenadas internamente no se eliminarán a menos que todos los mensajes de respuesta de agregación vuelvan. Esto puede provocar una acumulación gradual de mensajes en las colas internas. Para evitarlo, establezca el tiempo de espera excedido en un valor diferente de cero (cero significa que nunca se excede) para que al alcanzar el tiempo de espera excedido las peticiones se eliminen y las colas no se llenen con peticiones redundantes. Incluso si los tiempos de espera excedidos no se solicitan o prevén, es aconsejable establecer el tiempo de espera excedido en un valor alto (por ejemplo: 864000 segundos, que equivalen a 24 horas) para que las colas se vacíen ocasionalmente de agregaciones antiguas.

    4. Conecte el terminal de salida del nodo AggregateControl al terminal de entrada de uno o más nodos Compute que analizan y desglosan la petición del mensaje de entrada que se propaga en este terminal.
    Nota: El terminal de control del nodo AggregateControl ha quedado desfasado en la Versión 6.0 y, por omisión, se ignorarán las conexiones de este terminal al nodo AggregateReply (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 se envíe un mensaje de control del nodo AggregateControl al nodo AggregateReply, deberá conectar el terminal de control al nodo AggregateReply correspondiente en el flujo de abanico de entrada (directa o indirectamente, como se describe en Asociar flujos de agregación de mensajes de abanico de salida y de abanico de entrada). Si lo conecta indirectamente al nodo AggregateReply, por ejemplo mediante un nodo MQOutput, deberá incluir un nodo Compute para añadir las cabeceras apropiadas al mensaje para asegurar que se pueda transmitir de forma segura.

    Además, para que se reconozcan el terminal de control y las conexiones desde el 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 extrae información del mensaje de entrada y crea un nuevo mensaje de salida.

    Si las aplicaciones de destino que manejan las peticiones de la subtarea pueden extraer la información que requieren del mensaje de entrada individual, no es necesario que incluya un nodo Compute para dividir el mensaje. Puede pasar todo el mensaje de entrada a todas las aplicaciones de destino.

    Si las aplicaciones de destino esperan recibir una petición individual, no todo el mensaje de entrada, debe incluir un nodo Compute para generar cada mensaje de salida de subtarea individual a partir del mensaje de entrada. Configure cada nodo Compute del modo siguiente, copiando el subconjunto adecuado del mensaje de entrada a cada mensaje de salida.

    1. Pulse con el botón derecho el nodo Compute y pulse Propiedades.
    2. Seleccione un valor para la propiedad básica Modalidad de cálculo. Esta propiedad especifica las secciones del árbol de mensaje que modifica el nodo.

      El nodo AggregateControl inserta elementos en el árbol de Entorno local del mensaje de entrada que el nodo AggregateRequest lee cuando el mensaje llega al nodo. Asegúrese de que el Entorno local se copia del mensaje de entrada al mensaje de salida del nodo Compute. Esto sucede automáticamente a menos que especifique un valor que incluya Entorno local (que puede ser Todo, Entorno local, Entorno local y mensaje o Excepción y Entorno local).

      Si especifica uno de estos valores, el intermediario presupone que está personalizando el nodo Compute con ESQL que se escribe en el Entorno local y que copiará otros elementos de dicho árbol que necesite el mensaje de salida.

      Si desea modificar Entorno local, añada la sentencia siguiente para copiar la información de agregación necesaria del mensaje de entrada al mensaje de salida.

      SET OutputLocalEnvironment.ComIbmAggregateControlNode = 
                  InputLocalEnvironment.ComIbmAggregateControlNode;
    3. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
    4. Conecte el terminal de salida de cada nodo Compute con el terminal de entrada del nodo de salida que representa el destino del mensaje de petición de salida que ha creado a partir del mensaje de entrada de este nodo.
    Nodo de salida
    Incluya un nodo de salida para cada mensaje de salida que genere en el flujo de mensajes de abanico de salida. Configure cada nodo como se describe a continuación, con las modificaciones adecuadas para cada destino.

    Deberá ser un nodo de salida que soporte el modelo de petición/respuesta, por ejemplo un nodo MQOutput o una combinación de estos nodos (en función de los requisitos de las aplicaciones de destino).

    1. Pulse con el botón derecho el nodo de salida y pulse Propiedades.
    2. Especifique el destino de los mensajes de salida de este nodo. Por ejemplo, especifique el nombre de una cola WebSphere MQ en el Nombre de cola de la propiedad básica a la que el nodo MQOutput envía los mensajes. La aplicación de destino debe procesar su petición y enviar la respuesta al destino de respuesta indicado en su mensaje de entrada (por ejemplo WebSphere MQ ReplyToQueue).
    3. Pulse Petición en la vista de la izquierda y establezca los valores de estas propiedades de modo que especifiquen que las respuestas se envían a la cola de entrada del flujo de mensajes de abanico de entrada.
    4. Opcional: especifique valores para cualquier otra propiedad que desee configurar para este nodo.
    5. Conecte el terminal de salida del nodo de salida al terminal de un nodo AggregateRequest. Cuando se propaga el mensaje a través del terminal de salida del nodo de salida, el nodo de salida incorporado actualiza la carpeta WrittenDestination en el Entorno local asociado con la información adicional que requiere el nodo AggregateRequest.

      La información que escriben los nodos incluidos es el nombre de cola, el nombre del gestor de colas el ID de mensaje y el ID de correlación (del MQMD) y el identificador de respuesta del mensaje (que se establece en el mismo valor que el ID de mensaje).

    Nodo AggregateRequest
    Incluya un nodo AggregateRequest para cada mensaje de salida que genere en el flujo de mensajes de abanico de salida.
    1. Pulse con el botón derecho el nodo de salida y pulse Propiedades.
    2. Establezca el Nombre de carpeta de la propiedad básica en un valor que identifique el tipo de petición que se ha enviado. Este valor lo utiliza el nodo AggregateReply para correlacionar el mensaje de respuesta cuando se recibe el flujo de mensajes de abanico de entrada. El nombre de la carpeta que especifique para cada petición que genere el flujo de mensajes de abanico de salida debe ser exclusivo.

    El nodo AggregateRequest graba un registro Inicio del cambioen WebSphere MQFin del cambio para cada mensaje que procesa. Esto permite que el nodo AggregateReply identifique a qué petición está asociada cada respuesta. Si los nodos de salida no son transaccionales, es posible que el mensaje de respuesta llegue en el flujo de mensajes de abanico de entrada que se haya confirmado esta actualización de la base de datos. Consulte Establecer valores de tiempo de espera para agregación para obtener detalles sobre cómo puede utilizar los tiempos de espera para evitar esto.

    PRECAUCIÓN:
    Aunque la utilización de los tiempos de espera puede ayudar a evitar esta situación descrita anteriormente, es preferible asegurarse de que no es posible que los mensajes de respuesta lleguen al flujo de abanico de entrada antes de que los nodos AggregateRequest correspondientes hayan confirmado las actualizaciones de base de datos, haciendo que el flujo de abanico de salida sea transaccional.
  4. Pulse Control+S para guardar el flujo de mensajes y validar su configuración.
Para recopilar las respuestas de agregación iniciadas por el flujo de abanico de salida y crear el flujo de abanico de entrada, consulte Crear el flujo de mensajes de abanico de entrada de agregación.
Conceptos relacionados
Visión general de flujos de mensajes
Estructura del árbol de Entorno local
Agregación de flujo de mensajes
Nodos de entrada definidos por el usuario
Nodos de salida definidos por el usuario
Tareas relacionadas
Configurar flujos de agregación
Crear el flujo de mensajes de abanico de entrada de agregación
Utilizar mensajes de control en flujos de agregación
Asociar flujos de agregación de mensajes de abanico de salida y de abanico de entrada
Establecer valores de tiempo de espera para agregación
Utilizar varios nodos AggregateControl
Manejar excepciones en flujos de agregación
Diseñar un flujo de mensajes
Crear un flujo de mensajes
Definir el contenido del flujo de mensajes
Generar varios mensajes de salida
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
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac12290_