Asociación de flujos de agregaciones ramificados y de abanicos de entrada

Asociar el proceso del flujo de mensajes ramificado con su correspondiente proceso de flujo de mensajes de abanico de entrada estableciendo la propiedad Nombre de agregación de los nodos AggregateControl y AggregateReply en el flujo de agregaciones en el mismo valor.

Antes de empezar:

Para llevar a cabo esta tarea, debe haber completado las siguientes tareas:

El Nombre de agregación debe ser exclusivo en su contexto dentro de un intermediario. En general, esto significa que debe haber sólo un nodo AggregateControl y un nodo AggregateReply con un determinado Nombre de agregación, aunque es posible tener más de un nodo AggregateControl con el mismo Nodo de agregación, como se describe en Utilización de varios nodos AggregateControl.

Los flujos ramificados y de abanico de entrada pueden crearse en el mismo flujo de mensajes o en dos flujos de mensajes distintos. En cualquiera de los dos casos, las dos partes de la agregación están enlazadas al conectar el nodo AggregateControl del flujo ramificado con el nodo AggregateReply del flujo de abanico de entrada.

La forma en que se configura el flujo de agregaciones depende de varios factores:

Es más fácil implementar un solo flujo para un caso sencillo, pero existen algunas limitaciones en este método y, en la mayoría de los casos, es preferible la flexibilidad que ofrece la utilización de dos mensajes. En el ejemplo Línea aérea se muestra el uso de dos flujos para la agregación.

Para asociar el flujo ramificado con el flujo de abanico de entrada:

  1. Cambie a la perspectiva Desarrollo de aplicaciones de intermediario.
  2. Si ha creado los flujos ramificado y de abanico de entrada en un solo flujo de mensajes:
    1. Abra el flujo de mensajes de la agregación.
    2. Conecte el terminal de control del nodo AggregateControl con el terminal de control del nodo AggregateReply para llevar a cabo la asociación.

    Esto se denomina conexión directa entre los dos nodos de agregación.

  3. Si ha creado los flujos ramificado y de abanico de entrada distintos:
    1. Abra el flujo de mensajes ramificado.
    2. Configure el nodo AggregateControl como se describe en Creación del flujo ramificado de agregaciones.
    3. Configure un nodo de salida que represente el destino intermedio para el mensaje de control. Por ejemplo, si desea enviar el mensaje de control a una cola WebSphere MQ intermedia, incluya un nodo MQOutput e identifique la cola de destino en las propiedades Básico Nombre del gestor de colas y Nombre de cola.
    4. Opcional: configure un nodo Compute que cree un mensaje de salida válido que contenga el mensaje de control. Por ejemplo, si desea pasar el mensaje de control a un nodo MQOutput, configure el nodo Compute de forma que añada un MQMD al mensaje y rellene los campos necesarios en dicha cabecera.

      Por ejemplo, puede codificar el siguiente ESQL:

      SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID;
      SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION;
      SET OutputRoot.MQMD.Format = MQMD_STRING;
    5. Conecte el terminal de control del nodo AggregateControl al terminal de entrada del nodo de salida que representa el destino intermedio para el mensaje de control. Si ha incluido un nodo Compute, conecte el terminal de control del nodo AggregateControl al terminal de entrada del nodo Compute y el terminal de salida del nodo Compute al terminal de entrada del nodo de salida que representa el destino intermedio para el mensaje de control.
    6. Abra el flujo de mensajes de abanico de entrada.
    7. Configure al menos un nodo de entrada para que reciba los mensajes de respuesta, como se describe en Creación de un flujo de abanico de entrada de agregación.
    8. Configure un nodo de entrada para que reciba la información de control procedente del nodo AggregateControl. Por ejemplo, establezca la propiedad Básico Nombre de cola del nodo MQInput de modo que reciba el mensaje de control de una cola de WebSphere MQ intermedia.
    9. Conecte el terminal de salida del nodo de entrada que recibe el mensaje de control con el terminal de control del nodo AggregateReply.

    Esto se denomina conexión indirecta entre los dos nodos de agregación.

Las ventajas de un solo flujo de mensajes que contiene tanto el flujo ramificado como el flujo de abanico de entrada son:

Las ventajas de crear flujos ramificado y de abanico de entrada separados son:

Mantenimiento de flujos de mensajes

Es posible que durante la duración de un flujo de mensajes sea necesario suspender su operación, cambiar su diseño y difundirlo de nuevo. Si un flujo de mensajes incluye agregación, puede serle útil suspender las operaciones en dos fases:

  1. Suspenda la fase de ramificado para detener todas las peticiones que se están enviando, y espere a que la fase de abanico de entrada haya atendido todas las peticiones pendientes.
  2. Cuando no haya agregaciones pendientes, suspenda la fase de abanico de entrada.

Utilice este cierre en dos fases para asegurarse de que los tiempos de espera se comportan de una forma previsible. Si las fases de ramificado y de abanico de entrada están en el mismo flujo de mensajes, puede ser difícil realizar el cierre de esta forma. Si WebSphere MQ es el transporte subyacente, puede lograrse hasta cierto punto, inhibiendo las operaciones de obtener y transferir en las colas implicadas. Otros transportes pueden tener una prestación parecida.

Conceptos relacionados
Flujos de mensajes
Agregación de flujos de mensajes

Tareas relacionadas
Configuración de flujos de agregación
Creación del flujo ramificado de agregaciones
Creación de un flujo de abanico de entrada de agregación
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

Referencia relacionada
Nodo AggregateControl
Nodo AggregateReply
Nodo AggregateRequest