Cómo se procesan los mensajes en modalidad ASF
En modalidad ASF, las sesiones de servidor y las hebras solamente se asignar a trabajo cuando se detecta un mensaje que puede resultar adecuado para el bean controlado por mensaje (MDB). El número de hebras que un MDB pueden procesar de forma simultánea viene determinado por el valor de la propiedad Número máximo de sesiones para el puerto de escucha.
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.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)

- Cuando se inicia el puerto de escucha, abre una conexión con IBM MQ y crea un agente de cola interno.
- El agente de cola permanece a la escucha de mensajes en el destino JMS.
- El agente de cola detecta un mensaje.
- El agente de cola comprueba si el mensaje es adecuado para el MDB que utiliza el puerto de escucha.
- Si el mensaje es adecuado para el MDB, el puerto de escucha asigna una hebra de la agrupación de hebras del servicio de escucha de mensajes y asigna una sesión del servidor de la agrupación de sesión con el servidor de la aplicación. Si es la primera vez que se utiliza la sesión con el servidor desde que se ha iniciado el puerto de escucha, se abre una conexión al proveedor de JMS. La sesión con el servidor asignado se ejecuta en la hebra asignada.
- El agente de colas pasa el ID del mensaje a la sesión con el servidor. A continuación comienza a escuchar mensajes de nuevo.
- La sesión con el servidor utiliza el ID de mensaje para recuperar el mensaje del destino.
- La sesión con el servidor procesa el mensaje invocando al método onMessage() del MDB.
- Cuando se ha procesado el mensaje, la sesión con el servidor sale y vuelve a la agrupación de sesiones del servidor de aplicaciones. La conexión que ha abierto la sesión con el servidor al proveedor de JMS permanece abierta por lo que la sesión con el servidor no necesita restablecer la conexión la próxima vez que se utiliza.
- La hebra sale y vuelve a la agrupación de hebras del servicio de escucha de mensajes.
El número de hebras que un MDB pueden procesar de forma simultánea viene determinado por el valor de la propiedad Número máximo de sesiones para el puerto de escucha. Si establece Número máximo de sesiones en el valor predeterminado 1, el MDB sólo puede procesar un mensaje cada vez. Por lo tanto, si el agente de colas encuentra un segundo mensaje antes de que el primer mensaje haya terminado de procesarse, el agente de colas bloquea el segundo mensaje hasta que finalice el proceso del primer mensaje y la sesión de servidor vuelva a estar disponible.
- El agente de colas detecta el primer mensaje y asigna una hebra y una hebra y una sesión con el servidor como en el primer ejemplo. El mensaje se procesa utilizando el método onMessage() del MDB.
- Mientras se está procesando el primer mensaje, el agente de colas inicia de nuevo la escucha de mensajes.
- El agente de colas detecta el segundo mensaje y asigna una segunda hebra y una segunda sesión con el servidor. El mensaje se procesa utilizando el método onMessage() del MDB.
- Cuando se procesa el primer mensaje, se sale de la primera sesión con el servidor y se vuelve a la agrupación de sesiones con el servidor. La primera hebra sale y vuelve a la agrupación de hebras.
- Cuando se procesa el segundo mensaje, se sale de la segunda sesión con el servidor y se vuelve a la agrupación de sesiones con el servidor. La segunda hebra sale y vuelve a la agrupación de hebras.
![[z/OS]](../images/ngzos.gif)
En el diagrama siguiente se muestra cómo se produce la mensajería entre WebSphere Application Server y IBM MQ cuando el servicio de escucha de mensajes opera en modalidad ASF.

- Cuando se inicia el puerto de escucha, abre una conexión con IBM MQ y crea un agente de cola interno.
- El agente de cola permanece a la escucha de mensajes en el destino JMS.
- El agente de colas detecta un mensaje y comprueba si es adecuado para el MDB que está utilizando el puerto de escucha.
- Si el mensaje es adecuado para el MDB, el agente de cola pasa el ID de mensaje en un registro de trabajo. El registro de trabajo se envía luego a la cola de gestión de carga de trabajo (WLM).
- El agente de cola inicia de nuevo la escucha de mensajes.
- La cola WLM inicia un asignador ASF dentro de una región sirviente para procesar el registro de trabajo.
- El asignador de ASF asigna una sesión con el servidor desde la agrupación de la sesión del servidor.
- La sesión con el servidor utiliza el ID de mensaje del registro de trabajos para recuperar el mensaje del destino.
- La sesión con el servidor procesa el mensaje invocando al método onMessage() del MDB.
- Cuando se procesa el mensaje, la sesión con el servidor sale y vuelve a la agrupación de sesiones del servidor de aplicaciones. La conexión que ha abierto la sesión con el servidor al proveedor de JMS permanece abierta por lo que la sesión con el servidor no necesita restablecer la conexión la próxima vez que se utiliza.
- La hebra sale y vuelve a la agrupación de hebras del servicio de escucha de mensajes.
El número de hebras que un MDB pueden procesar de forma simultánea viene determinado por el valor de la propiedad Número máximo de sesiones para el puerto de escucha. Si establece Número máximo de sesiones en el valor predeterminado 1, el MDB sólo puede procesar un mensaje cada vez. Por lo tanto, si el agente de colas encuentra un segundo mensaje antes de que el primer mensaje haya terminado de procesarse, el agente de colas bloquea el segundo mensaje hasta que finalice el proceso del primer mensaje y la sesión de servidor vuelva a estar disponible.
- El agente de colas detecta el primer mensaje y configura un registro de trabajo, igual que en el primer ejemplo.
- El registro de trabajo se envía a la cola WLM y se configura un asignador de ASF en una región de sirviente.
- El asignador de ASF asigna una sesión con el servidor y se procesa el mensaje utilizando el método onMessage() del MDB.
- Mientras se está procesando el primer mensaje, el agente de colas inicia de nuevo la escucha de mensajes.
- El agente de colas detecta el segundo mensaje y asigna una segunda hebra y una segunda sesión con el servidor. El mensaje se procesa utilizando el método onMessage() del MDB.
- Cuando se procesa el primer mensaje, se sale de la primera sesión con el servidor y se vuelve a la agrupación de sesiones con el servidor. La primera hebra sale y vuelve a la agrupación de hebras.
- Cuando se procesa el segundo mensaje, se sale de la segunda sesión con el servidor y se vuelve a la agrupación de sesiones con el servidor. La segunda hebra sale y vuelve a la agrupación de hebras.