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:

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 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 flujo de abanico de salida que se proporciona con WebSphere Message Broker, vea el ejemplo siguiente: 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 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. Este nodo puede ser cualquiera de los nodos incorporados, o un nodo de entrada definido por el usuario.
    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 de 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. Por ejemplo, establezca la propiedad avanzada Modalidad de transacción en el valor predeterminado para asegurarse de que los mensajes de petición agregados se transfieren bajo punto de sincronismo. Esta opción evita una situación en la que el nodo AggregateReply recibe mensajes de respuesta antes de haber recibido el mensaje de control que le informa de la instancia de agregación. Al poner el flujo de abanico de salida bajo control transaccional se asegura que el flujo de abanico de salida se complete antes de que los mensajes de respuesta lleguen a AggregateReply.
    4. Conecte el terminal Out (de salida) del nodo de entrada al terminal In (de entrada) de un nodo AggregateControl. Esto representa la configuración más sencilla; si procede, puede incluir otros nodos entre el nodo de entrada y el nodo AggregateControl. Por ejemplo, si desea almacenar la petición con para realizar una 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 abanico de entrada se combinan en un flujo de mensajes, modifique Modalidad de orden en el separador Avanzadas. Seleccione la opción Por orden de cola y asegúrese de que la propiedad Orden lógico también esté seleccionada. Estas opciones hacen que el nodo de entrada sea de una sola hebra para mantener el orden lógico de los mensajes que llegan en la cola. Todas las hebras de instancias adicionales que queden disponibles se compartirán 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 separados, 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. El nodo AggregateControl crea la carpeta LocalEnvironment.ComIbmAggregateControlNode. Esta carpeta y los campos dentro de ella son para uso interno de WebSphere Message Broker y el usuario no debe basarse en su existencia ni sus valores cuando desarrolla sus flujos de mensajes.
    1. Seleccione el nodo AggregateControl 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 AggregateControl de modo que identifique esa agregación en particular. Esto se utiliza posteriormente para asociar ese nodo AggregateControl a 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 en el nodo AggregateControl, las peticiones de agregación almacenadas internamente no se eliminarán a menos que se devuelvan todos los mensajes de respuesta de agregación. Esta situación podría causar una acumulación gradual de mensajes en las colas internas. Para evitar esta situación, establezca el tiempo de espera en un valor distinto de cero (cero significa que nunca se excede el tiempo de espera) para que al alcanzar el tiempo de espera 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: 86400 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 permitan el análisis y desglose de la petición del mensaje de entrada que se propaga en este terminal.
    Atención: El terminal de control del nodo AggregateControl dejó de utilizarse en la Versión 6.0 y, de forma predeterminada, se ignorarán todas las conexiones (directas o indirectas) de este terminal al nodo AggregateReply.. Esta configuración maximiza la efectividad de los flujos de agregación y no afecta a la fiabilidad de las agregaciones. Ésta es la configuración óptima.

    No obstante, si desea que se envíe un mensaje de control desde el 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 explica 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 adecuadas al mensaje y asegurarse de que puede transmitirse de forma segura.

    Además, para poder reconocer el terminal de control y las conexiones desde el mismo, debe habilitar la variable de entorno MQSI_AGGR_COMPAT_MODE. No obstante, esta opción tiene implicaciones relacionadas con el rendimiento y el comportamiento de las agregaciones de mensaje. Para ver 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 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 el mensaje de entrada completo a todas las aplicaciones de destino.

    Si las aplicaciones de destino esperan recibir una petición individual, no el mensaje de entrada completo, 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 en cada mensaje de salida:

    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. 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 del entorno local en el mensaje de entrada que lee el nodo AggregateRequest cuando el mensaje llega a él. Asegúrese de que el Entorno local se copia del mensaje de entrada al mensaje de salida del nodo Compute. Esta configuración se produce automáticamente a menos que especifique un valor que incluya el entorno local (que puede ser Todo, Entorno local, Entorno local y mensaje o Excepción y Entorno local).

      Si especifica alguno de estos valores, el intermediario supone que está personalizando el nodo Compute con ESQL que se escribe en el entorno local y que copiará sobre cualquier elemento del árbol que se requiera en 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 al 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 abanico de salida. Configure cada nodo, tal como se describe posteriormente en esta sección, con las modificaciones adecuadas para cada destino.

    El nodo de salida ha de ser un nodo de salida que tenga soporte para el modelo de petición / respuesta, por ejemplo un nodo MQOutput o una combinación de esos nodos (dependiendo de los requisitos de las aplicaciones de destino).

    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 de los mensajes de salida de este nodo. Por ejemplo, especifique el nombre de una cola de WebSphere MQ en la propiedad básica Nombre de cola 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 valores para estas propiedades para especificar que las respuestas se envían a la cola de entrada del flujo 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 entrada de un nodo AggregateRequest. Cuando el mensaje se propaga a través del terminal de salida del nodo de salida, el nodo de salida incorporado actualiza la carpeta WrittenDestination dentro del entorno local asociado con la información adicional que requiere el nodo AggregateRequest.

      La información que escriben los nodos incorporados 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 abanico de salida.
    1. Seleccione el nodo AggregateRequest 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 básica Nombre de carpeta en un valor que identifique el tipo de petición que se ha enviado. Este valor lo utiliza el nodo AggregateReply para compararlo con el mensaje de respuesta cuando éste se recibe en el flujo 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 en WebSphere MQ para cada mensaje que procesa. Ese registro permite al nodo AggregateReply identificar con 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. Para obtener detalles sobre el modo de utilizar tiempos de espera para evitar esta situación, consulte Establecer valores de tiempo de espera para agregación.

    PRECAUCIÓN:
    Aunque el uso de tiempos de espera puede ayudar a evitar la situación descrita anteriormente, configure el flujo de abanico de salida para que sea transaccional de forma que los mensajes de respuesta no puedan llegar al flujo de abanico de entrada antes de que los nodos AggregateRequest correspondientes hayan confirmado las actualizaciones de sus bases de datos.
  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.
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
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
Desarrollo de extensiones definidas por el usuario
Referencia relacionada
Nodo AggregateControl
Nodo AggregateReply
Nodo AggregateRequest
Nodo Compute
Nodo MQInput
Nodo MQOutput
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

ac12290_