La agregación es la generación y diseminación (abanico de salida) de solicitudes relacionadas derivadas de un único mensaje de entrada, y la agrupación (abanico de entrada) de las respuestas correspondientes para producir un único mensaje de respuesta agregado.
La solicitud inicial que recibe el flujo de mensajes, que representa un conjunto de elementos de solicitud relacionados, se divide en el número adecuado de solicitudes individuales para satisfacer las subtareas de la solicitud inicial. Este proceso se conoce como diseminación y lo proporciona un flujo de mensajes que incluye nodos de agregación.
Las respuestas de las subtareas se combinan y fusionan en una sola respuesta, que se devuelve al peticionario original (o a otra aplicación de destino) para indicar la finalización del proceso. Este proceso se conoce como agrupación y también lo proporciona un flujo de mensajes que incluye nodos de agregación.
Una agregación de mensajes la inicia un flujo de mensajes que contenga el nodo AggregateControl seguido de un nodo AggregateRequest. Las respuestas se vuelven a agregar utilizando un flujo que contiene el nodo AggregateReply. Los nodos de agregación sólo funcionan correctamente para los transportes que utilizan un modelo de solicitud/respuesta, por ejemplo WebSphere MQ Enterprise Transport.
Cuando incluye estos nodos en sus flujos de mensajes, las distintas solicitudes de diseminación se emiten en secuencia desde una hebra dentro de un proceso de grupo de ejecución.
Si utiliza WebSphere MQ Enterprise Transport, las respuestas que reciba el flujo de abanico de entrada deben ser mensajes de respuesta válidos que contengan el identificador de respuesta. Debe establecer el identificador de respuesta para el valor del campo de identificador de mensaje (MsgId) en el descriptor de mensaje (MQMD) del mensaje de solicitud y, a continuación, almacenar el identificador de respuesta en el campo de identificador de correlación (CorrelId) del MQMD. Si el CorrelId se establece en MQCI_NONE, el nodo AggregateReply emite un error porque el mensaje de respuesta no es válido y no se puede encontrar una coincidencia con un mensaje de petición.
También puede utilizar estos nodos de agregación para emitir solicitudes a aplicaciones fuera del entorno de intermediario. Se pueden enviar mensajes de forma asíncrona a aplicaciones o servicios externos; las respuestas se recuperan de esas aplicaciones y se combinan para proporcionar una sola respuesta al mensaje de solicitud original.
Estos nodos pueden ayudar a mejorar el tiempo de respuesta, ya que las solicitudes lentas se pueden realizar en paralelo y no necesitan ir una detrás de otra secuencialmente. Si las subtareas se pueden procesar independientemente y no necesitan manejarse como parte de una sola unidad de trabajo, las pueden procesar flujos de mensajes separados.
Puede diseñar y configurar un flujo de mensajes que proporcione una función similar sin utilizar los nodos de agregación, emitiendo las solicitudes de subtareas a otra aplicación (por ejemplo, utilizando el nodo HTTPRequest) y registrando los resultados de cada solicitud en el entorno local. Una vez que se haya completado cada subtarea, fusione los resultados del Entorno local en un nodo Compute y cree el mensaje de respuesta combinado para propagarlo a la aplicación destino. No obstante, todas las subtareas se realizan secuencialmente y no ofrecen las ventajas de rendimiento de la operación en paralelo que puede obtener utilizando los nodos de agregación.
Puede ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center en línea. Puede ejecutar ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit.
De forma predeterminada, el tiempo de espera en el nodo AggregateControl se establece en 0. Si no especifica un tiempo de espera (o si lo deja establecido en 0), las solicitudes de agregación que WebSphere MQ almacena no se suprimen nunca, a menos que se devuelvan todos los mensajes de respuesta. Esta situación podría causar una acumulación gradual de mensajes en las colas internas. Establezca el tiempo de espera en un valor superior a cero para asegurar que las solicitudes se eliminen y que no se llenen las colas con solicitudes redundantes. Es una buena practica establecer el valor de tiempo de espera en un valor alto, por ejemplo 86400 segundos (24 horas), para que las colas borren los mensajes de agregación antiguos, aunque no se requieran o esperen tiempos de esperas.
Puede establecer el tiempo de espera estableciendo la propiedad Tiempo de espera en el nodo AggregateControl, o utilizando un servicio configurable de agregación y especificando la propiedad timeoutSeconds. Para obtener más información, consulte Establecer valores de tiempo de espera para agregación.
Los nodos de agregación utilizan la caducidad de mensajes de WebSphere MQ para gestionar el tiempo de espera de los mensajes. Para que la caducidad de mensajes funcione, los nodos de agregación deben examinar las colas de mensajes. Los nodos de agregación examinan las colas automáticamente para asegurarse de que los mensajes caducados se procesan.
En z/OS, puede configurar
WebSphere MQ para que ejecute un proceso limpiador que
examine las colas en lugar de los nodos de agregación.
Para habilitar el proceso limpiador, establezca la propiedad EXPRYINT del gestor de colas del intermediario en un valor de 5 segundos. Si no establece EXPRYINT, o la establece en un valor superior a 10
segundos, los nodos de agregación vuelven a examinar las colas de
agregación automáticamente.