![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
Orden de mensajes estricto utilizando puertos de escucha no ASF
Puede obtenerse el orden de mensajes estricto al desplegar aplicaciones de bean controlado por mensaje en el proveedor de mensajería de IBM MQ cuando no se han codificado recursos especiales en la aplicación para manejar los mensajes que llegan desordenados.
Para WebSphere Application Server versión 7 y posteriores,
los puertos de escucha se estabilizan. Para obtener más información, consulte el artículo
sobre las características que se han estabilizado. Debe planificar la migración de sus configuraciones de despliegue de beans controlados por mensajes de
WebSphere MQ para pasar de utilizar puertos de escucha a utilizar especificaciones de activación.
Para obtener más información sobre cómo configurar
especificaciones de activación para la modalidad no ASF, consulte Configuración de especificaciones de activación
para la modalidad no ASF. No obstante, no debe iniciar esta migración hasta que esté seguro de que la aplicación no
tiene que trabajar con servidores de aplicaciones anteriores
WebSphere Application Server Versión 7. Por
ejemplo, si tiene un clúster de servidor de aplicaciones con algunos miembros de la
versión 6.1 y otros de una versión posterior, no debe migrar las aplicaciones en dicho
clúster para que utilicen las especificaciones de activación hasta que haya migrado todos
los servidores de aplicaciones del clúster a la versión posterior.
- La aplicación de beans controlados por mensajes (MDB) es transaccional.
- El umbral de restitución (BOTHRESH) en la cola de IBM MQ se ha establecido en 0.
Configuración de WebSphere Application Server para entrega ordenada
- Para activar la modalidad no ASF, especifique un valor distinto de cero para la propiedad personalizada del servicio de escucha de mensajes de IBM MQ NON.ASF.RECEIVE.TIMEOUT.
- El valor de Número máximo de sesiones para el puerto de escucha debe establecerse en 1.
- Un puerto de escucha no ASF con Número máximo de sesiones establecido en 1 tiene una única hebra en ejecución dentro del servidor de aplicaciones que recupera mensajes. Cuando llega un mensaje de la hebra, lo entrega inmediatamente al MDB.
- El gestor de colas considera esta hebra como una única aplicación que recupera mensajes, por lo que los mensajes se procesan por orden.
Los mensajes se pueden entregar sin orden con este despliegue durante una recuperación de transacción
Un conjunto específico de sucesos debe producirse en un orden específico para que se pueda encontrar este escenario y, ello, como tal, no es común. Sin embargo, si la entrega de mensajes ordenados es imprescindible para el funcionamiento de la aplicación, deberá considerarla.
- La entrega desordenada puede producirse con esta opción de despliegue durante la recuperación de una anomalía de uno de los siguientes componentes:
- El servidor de aplicaciones que aloja el MDB
- El gestor de colas de IBM MQ
- Una red que se conecta al servidor de aplicaciones y al gestor de colas
- Si uno de estos componentes falla en medio de una confirmación de dos fases de una transacción de MDB, el gestor de transacciones del servidor de aplicaciones restablece su conexión al gestor de colas para resolver la transacción cuando el componente vuelva a estar disponible.
- Este proceso de recuperación es asíncrono y es posible que la entrega de nuevos mensajes al MDB comience antes del que el proceso de recuperación de la transacción haya finalizado. Si el resultado de la recuperación de la transacción es retrotraer la transacción, entonces el mensaje se devolverá a la cola de WebSphere MQ y se volverá a entregar a la aplicación, posiblemente después de entregar los mensajes nuevos.
Consideraciones sobre el despliegue en clúster
Al utilizar puertos de escucha no ASF, puede establecer la opción de compartimiento predeterminada (DEFSOPT) de la cola en exclusive. Si elige esta opción cuando está realizando un despliegue en clúster de una aplicación, ninguno de los miembros del clúster menos uno podrá iniciar sus puertos de escucha. Los miembros del clúster generan una excepción 2042MORC_OBJECT_IN_USE, en un mensaje WMSG0057E.
Si se produce esta excepción, puede establecer la migración tras error automática para la aplicación configurando la siguiente propiedad personalizada del servicio de escucha de mensajes en WebSphere Application Server:
- MAX.RECOVERY.RETRIES
- Configure un valor alto de MAX.RECOVERY.RETRIES en los servicios de escucha de mensajes de todos los servidores del clúster. El valor máximo para MAX.RECOVERY.RETRIES es 2147483647.
- La propiedad personalizada del servicio de escucha de mensajes MAX.RECOVERY.RETRIES debe ir acompañada de una propiedad personalizada del servicio de escucha de mensajes MAX.RECOVERY.INTERVAL adecuada. La cantidad máxima de tiempo durante el que un puerto de escucha puede realizar reintentos sin ser detenido y reiniciado manualmente es de 2147483647 veces el valor especificado para MAX.RECOVERY.INTERVAL. En esta configuración, cada miembro del clúster intenta continuamente iniciar su puerto de escucha, hasta que el miembro del clúster activo se detiene y el gestor de colas le permite conectarse como un único consumidor exclusivo.