Tengo una aplicación donde los mensajes siguen llegando a una velocidad de 70K XML por hora. Consumimos estos mensajes XML y los almacenamos en una cola intermedia. La cola intermedia se crea porque necesitamos cumplir SLA para consumir todos los mensajes con 24 horas. Podemos consumir y cargar el XMLS en la cola interna dentro de las 24 horas. Después de cargarlo en la cola interna, procesamos el XMLS (análisis sintáctico, aplicamos muy pocas transformaciones, realizamos muy pocas validaciones) y almacenamos los datos en un modelo de datos muy normalizado. Sé que el modelo de datos puede tener un gran impacto en el rendimiento. Desafortunadamente, no tenemos control sobre el modelo de datos. Actualmente, tomamos 3.5 minutos para procesar mensajes 2K, lo cual es inaceptable. Queremos reducirlo a 1 minuto para mensajes 2K. Esto es lo que hemos hecho hasta ahora:¿Cómo puedo mejorar el rendimiento de una aplicación por lotes basada en MQ?
1) Índices aplicados donde corresponda.
2) Use XMLBeans para analizar los XMLs (tamaño de cada XML no es muy grande)
3) que se retiró todas las validaciones innecesarios, transformatios, etc.
la aplicación se ejecuta en:
sistema operativo : RHEL 5.4 64 bit
Plataforma: JDK 1.6.0_17, 64 bit
Base de datos: Oracle 11g R2 64 bits (2 grupo de nodos)
MQ externa: IBM Queue
MQ almacenamiento temporal interno: JBoss MQ
Application Server: Jboss 5.1. 0.GA (Versión EAP)
El orden en que consumimos y procesamos los mensajes XML es muy importante, por lo que no podemos hacer un procesamiento en paralelo.
¿Hay algo más que podamos hacer para mejorar el rendimiento?
Como dijiste, el rendimiento de MQ Websphere es bastante bueno. El problema que mencionaste ocurre al tratar de procesar los mensajes. Actualmente, no tenemos el lujo de volver a publicar los mensajes, por lo que estamos atascados con 1 publicación simple. Parece que no tengo más carreteras adicionales para tomar. Gastar dinero en hardware también está fuera del camino. Trataré de introducir el paralelismo dentro de cada procesamiento de mensaje tal vez. Gracias de todos modos, solo quería asegurarme de tener todo cubierto. – SJoe