Cada flujo de mensajes que diseñe debe proporcionar un
conjunto completo de procesos para los mensajes recibidos de un origen
determinado. Este diseño puede dar como resultado unos flujos de
mensajes muy complejos que incluyen gran número de nodos y causan una
disminución del rendimiento y pueden crear posibles cuellos de botella. Puede aumentar el número de flujos de mensajes que procesan los mensajes para ofrecer la oportunidad de realizar procesos paralelos y, por tanto, de
mejorar el rendimiento.
La modalidad de
operación del intermediario puede afectar al número de flujos de mensajes que puede
utilizar; consulte Características de WebSphere Message Broker y
Restricciones que se aplican en cada modalidad de operación para obtener más información.
También puede tomar en consideración la
forma en que se confirman las acciones que toma el flujo de mensajes, y
el orden en que se procesan los mensajes.
WebSphere Message Broker Explorer permite ver las estadísticas de flujos de mensajes y datos de contabilidad. Consulte
Ver datos de contabilidad y estadísticos en WebSphere Message Broker Explorer para obtener más información sobre cómo se puede
acceder a los datos estadísticos.
Tenga en cuenta
las siguientes opciones para optimizar el rendimiento del flujo de
mensajes:
- Varias hebras de proceso de mensajes en un solo flujo de mensajes
- Cuando despliega un flujo de mensajes, el intermediario automáticamente
inicia una instancia del flujo de mensajes para cada nodo de entrada que
contiene.
Este comportamiento es el valor predeterminado. Si tiene un flujo de mensajes que maneja un gran número de mensajes, puede habilitar más mensajes para que se procesen asignando más instancias del flujo.
Puede actualizar la propiedad Instancias adicionales del flujo de mensajes desplegados en el archivo BAR; el intermediario inicia copias adicionales del flujo de mensajes en hebras separadas, que proporcionan procesos en paralelo. Esta opción es la forma más eficaz de manejar esta situación si no está preocupado por el orden en que se procesan los mensajes.
Si el flujo de mensajes
recibe mensajes de una cola de WebSphere MQ,
puede influir, hasta cierto punto, en el orden en que se procesan los
mensajes, estableciendo la propiedad Modalidad de orden
del nodo MQInput:
- Si establece la Modalidad de
orden en Por ID de
usuario o Definida por el
usuario, y el flujo de mensajes utiliza nodos de transformación,
es aconsejable establecer la Temporización del análisis en
Inmediato.
- Varias copias del flujo de mensajes en un intermediario
- También puede desplegar varias copias del mismo flujo de mensajes a distintos grupos de ejecución en el mismo intermediario. Esta opción tiene un efecto similar al aumento del número de hebras de proceso en un solo flujo de mensajes.
Esta opción también elimina la posibilidad de determinar el orden en que se procesan los mensajes, porque, si hay más de una copia del flujo de mensajes activa
en el intermediario, cada copia puede estar procesando un mensaje al mismo
tiempo, de la misma cola. El tiempo que se tarda en procesar un mensaje
puede variar y, por tanto, varios flujos de mensajes accediendo a la misma
cola podrían leer mensajes del origen de entrada en orden aleatorio. El orden de los mensajes generado por los flujos de mensajes podría no
corresponder al orden de los mensajes originales.
Asegúrese de
que las aplicaciones que reciben mensajes de estos flujos de mensajes
pueden tolerar mensajes que no estén en orden. Además, asegúrese de que los nodos de entrada de estos flujos de mensajes son adecuados para el despliegue en distintos procesos.
- Copias del flujo de mensajes en varios intermediarios
- Puede desplegar varias copias del mismo flujo de mensajes a distintos
intermediarios. Esta opción requiere cambios en la
configuración, porque debe asegurarse de que las aplicaciones que proporcionan
mensajes al flujo de mensajes puedan transferir los mensajes al puerto o a la
cola de entrada correcta. A menudo puede efectuar estos cambios cuando
despliega el flujo de mensajes estableciendo las propiedades configurables
del flujo de mensajes.
- El ámbito del flujo de mensajes
- Puede encontrarse con que, bajo ciertas
circunstancias, puede dividir un solo flujo de mensajes en varios flujos
de mensajes para reducir el ámbito de trabajo que realiza cada flujo de
mensajes. Si divide el flujo de mensajes, tenga presente que no es posible ejecutar los distintos flujos de mensajes en la misma unidad de trabajo y si hay aspectos transaccionales en el flujo de mensajes (por ejemplo, la actualización de varias bases de datos), esta opción no proporciona una solución adecuada.
Los dos ejemplos siguientes muestran cuándo puede ser beneficioso dividir un flujo de mensajes:
- En un flujo de mensajes que utiliza un nodo RouteToLabel, la cola de entrada podría aumentar de tamaño, lo que indica que el trabajo está llegando más rápido de lo que se procesa; esto puede indicar la necesidad de una mayor capacidad de proceso. Puede utilizar otra copia del flujo de mensajes en un segundo grupo de ejecución, pero esta opción no es adecuada si desea que todos los mensajes se manejen en el orden en el que se muestran en la cola. Puede pensar en dividir cada rama del flujo de
mensajes que empieza con un nodo Label proporcionando una cola de entrada y un nodo de entrada para cada rama. Esta opción puede ser adecuada porque cuando el nodo RouteToLabel direcciona el mensaje al nodo Label relevante, tiene un cierto nivel de independencias de todos los demás mensajes.
Quizá también tenga que proporcionar otra cola de entrada y otro nodo de entrada para completar cualquier proceso común al que se conecten las ramas del nodo Label una vez realizado el proceso exclusivo.
- Si tiene un flujo de mensajes que procesa mensajes de gran tamaño que
tardan un tiempo considerable en procesarse, puede:
- Crear otras copias del flujo de mensajes que utilicen una cola
de entrada distinta (puede establecer esta opción en el flujo de mensajes mismo o
puede actualizar esta propiedad cuando despliegue el flujo de mensajes).
- Establecer alias de cola de
WebSphere MQ para redirigir mensajes de
algunas aplicaciones a la cola y flujo de mensajes alternativos.
También puede crear un nuevo flujo de
mensajes que reproduzca la función del flujo de mensajes
original, pero sólo procese mensajes de gran tamaño que el flujo de
mensajes original le pasa inmediatamente, que ha modificado para comprobar el tamaño de los mensajes de entrada y redirigir los mensajes
grandes.
- La frecuencia de las confirmaciones
- Si un flujo de mensajes recibe mensajes de entrada en una cola de
WebSphere MQ, puede mejorar el rendimiento
para algunos escenarios de flujos de mensajes modificando las propiedades
predeterminadas después de añadirlo a un archivo BAR. (Estas opciones no están
disponibles si los mensajes de entrada los reciben otros nodos de entrada;
las confirmaciones en estos flujos de mensajes se realizan para cada
mensaje.)
Las propiedades siguientes controlan la frecuencia con que el
flujo de mensajes confirma las transacciones:
- Cuenta de confirmaciones. Esta propiedad representa el número de mensajes procesados desde la cola de entrada antes de emitir un MQCMIT.
- Intervalo de confirmación. Esta propiedad representa el intervalo de tiempo que transcurre antes de iniciar un MQCMIT.