Una cola continua es una cola JMS con un bean controlado por mensaje (MDB) como consumidor. Una cola continua está predefinida sólo para servicios empresariales y utiliza el procesamiento multihebra para proporcionar un mejor rendimiento del sistema. Una cola continua no garantiza el orden de procesamiento de los mensajes como en el caso de una cola secuencial.
Cuando el procesamiento de mensajes causa un error que se puede gestionar en la aplicación de reprocesamiento de mensajes, el sistema genera un mensaje de error y luego continúa procesando los mensajes siguientes en la cola. Hay una cola continua predeterminada para procesar los mensajes entrantes. Puede optar por implementar colas continuas adicionales, según sus necesidades de integración.
Habilitación de beans de mensaje:
Los beans de mensaje del servidor de aplicaciones actúan como el consumidor de mensajes desde una cola continua. Para habilitar los beans de mensaje para dar soporte a la cola continua, debe eliminar comentarios de las líneas de los archivos de despliegue XML en el servidor de aplicaciones.
Procedimiento
1. En los entornos WebSphere Application Server y WebLogic Server, descomente las siguientes líneas de código del archivo ejb-jar.xml, ubicado en la carpeta ...\applications\maximo\mboejb\ejbmodule\META-INF\:
<!-- MEA ejb for MDB
<message-driven id="MessageDriven_JMSContQueueProcessor_1"> <ejb-name>JMSContQueueProcessor-1</ejb-name> <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class> <transaction-type>Container</transaction-type> <message-destination-type>javax.jms.Queue</message-destination-type> <env-entry> <env-entry-name>MESSAGEPROCESSOR</env-entry-name> <env-entry-type>java.lang.String </env-entry-type> <env-entry-value>psdi.iface.jms.QueueToMaximoProcessor</env-entry-value> </env-entry> </message-driven> -->
<!-- MEA ejb for MDB <container-transaction> <method> <ejb-name>JMSContQueueProcessor-1</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> -->
2. Elimine los comentarios de las líneas siguientes del archivo
...\applications\maximo\mboejb\ejbmodule\META-INF\ibm-ejb-jar-bnd.xmien un entorno de WebSphere Application Server:
<!-- MEA ejb for MDB
<ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding"
xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsact"> <enterpriseBean xmi:type="ejb:MessageDriven"
href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_1"/> </ejbBindings>-->
3. Elimine los comentarios de las líneas siguientes en el archivo
...\applications\maximo\mboejb\ejbmodule\META-INF\weblogic-ejb-jar.xml en un entorno de WebLogic Server:
<!-- MEA MDB <weblogic-enterprise-bean> <ejb-name>JMSContQueueProcessor-1</ejb-name> <message-driven-descriptor> <pool> <max-beans-in-free-pool>3</max-beans-in-free-pool> </pool> <destination-jndi-name>jms/maximo/int/queues/cqin</destination-jndi-name> <connection-factory-jndi-name>jms/maximo/int/cf/intcf </ connection-factory-jndi-name> </message-driven-descriptor> <transaction-descriptor> <trans-timeout-seconds>600</trans-timeout-seconds> </transaction-descriptor> <jndi-name>JMSContQueueProcessor-1</jndi-name> </weblogic-enterprise-bean> -->
4. Una vez realizados los cambios en los archivos XML, debe volver a compilar el archivo EAR y volverlo a desplegar en el servidor de aplicaciones para que los cambios surtan efecto.
Rendimiento de la cola de continua:
Para mejorar el rendimiento de la cola, puede aumentar el número de beans controlados por mensaje para una cola e introducir servidores de aplicaciones adicionales en un clúster. Puesto que el procesamiento de mensajes es multihebra, se pueden producir errores debido al orden aleatorio del procesamiento.
Los ejemplos siguientes describen errores que se pueden producir. En ambos casos, el procesamiento de gestión de errores de integración puede reprocesar
satisfactoriamente el error antes de que el administrador del sistema pueda examinarlo.
Por ejemplo, carga por lotes un gran volumen de mensajes de partes y de inventario en la cola continua, y existen varios registros de inventario para el mismo número de parte. Si un mensaje de inventario para el Elemento A se procesa antes de que se procese el mensaje de parte que agrega el Elemento A al sistema, el mensaje de inventario produce un error porque el Elemento A no existe. El procesamiento continúa con el siguiente mensaje.
Finalmente, el mensaje de la parte para el Elemento A se procesa y la Parte A se agrega al sistema. El mensaje anómalo se puede procesar entonces correctamente. En este caso, el error se corrige sin intervención manual.
Este tipo de situación se puede producir cuando se cargan mensajes relacionados en la cola continua al mismo tiempo. Dicha situación es más probable que ocurra
cuando el volumen de transacciones sea elevado pero también se puede producir siempre que dos mensajes procesen datos relacionados simultáneamente.
Por ejemplo, dos mensajes intentan actualizar el mismo registro del sistema al mismo tiempo. Un mensaje resulta satisfactorio y el otro falla. No obstante, el procesamiento de gestión de errores del sistema debe procesar el segundo mensaje después de que la primera actualización haya finalizado.
Configuración de beans de mensaje:
Las ampliaciones específicas del servidor controlan el número máximo de beans que puede crear.
Configuración de beans de mensaje en WebSphere Application Server:
De forma predeterminada, el servidor está configurado para tener cinco beans controlados por mensaje.
Procedimiento
1. En la consola de administración, seleccione la especificación de activación de JMS.
2. Seleccione intjmsact.
3. Especifique un valor en el campo Número máximo de puntos finales
simultáneos.
Configuración de beans de mensaje en WebLogic Server:
De forma predeterminada, WebLogic Server está configurado para tener tres beans controlados por mensaje.
Procedimiento
1. Abra el archivo weblogic-ejb-jar.xml en un editor de texto. 2. Busque las líneas de código siguientes:
<pool>
<max-beans-in-free-pool>3</max-beans-in-free-pool> </pool>
3. Sustituya el valor 3 por un valor diferente si es necesario. Empiece con un número relativamente bajo de beans controlados por mensaje y supervise el rendimiento.
4. Modifique el archivo para aumentar el número de beans controlados por mensaje incrementalmente hasta que esté satisfecho con el rendimiento de procesamiento de los mensajes en la cola continua.
Qué hacer a continuación
Si el rendimiento del sistema es deficiente, puede resolver algunas cuestiones de rendimiento del sistema agrupando los servidores en clúster y aislando el procesamiento de mensajes entrantes a un clúster de servidor específico.
Almacenamiento en antememoria de mensajes:
El procesamiento de la cola continua utiliza la propiedad de Tamaño de lote máximo, en la definición de la Especificación de activación, para controlar el número de mensajes recibidos del motor de mensajería en un solo lote.