Cómo se conecta un bean controlado por mensajes en un clúster
Cuando una aplicación EJB (enterprise bean) se despliega en un clúster de servidores de aplicaciones, la aplicación puede ejecutarse en cualquiera de los servidores del clúster para proporcionar alta disponibilidad y escalabilidad de la aplicación. Cuando la aplicación EJB es un bean controlado por mensajes (MDB), puede ejecutarse en cualquiera de los servidores del clúster (para la alta disponibilidad) y puede invocarse simultáneamente en varios servidores de aplicaciones del clúster (para la escalabilidad). Este comportamiento depende de la ubicación del MDB respecto a los miembros del bus de integración de servicios y de la configuración del propio MDB.
De forma predeterminada, cuando una aplicación MDB se despliega en un clúster de servidores de aplicaciones que también es un miembro de bus de clúster del bus de integración de servicios, la aplicación MDB se conecta a uno o más motores de mensajería de los servidores que están dentro del clúster. El comportamiento de conexión predeterminado y el control de conexión adicional que se puede aplicar a cualquier aplicación JMS, incluidos los beans controlados por mensajes, se describen en Cómo se conectan las aplicaciones JMS a un motor de mensajería de un bus. No obstante, si utiliza la opciones de configuración que se describen en ese tema, el bean controlado por mensajes sólo se controla en los servidores del clúster que alojan un motor de mensajería iniciado.
- Todos los servidores del clúster pueden recibir mensajes de la aplicación MDB para aprovechar al máximo la potencia de proceso del clúster.
- Para asegurar el proceso secuencial de los mensajes, sólo un servidor a la vez puede recibir mensajes de la aplicación MDB.
- Comportamiento de conexión MDB: dentro de un único miembro de bus de clúster
- Comportamiento de la conexión MDB: entre un clúster y un miembro de bus independiente

Comportamiento de conexión MDB: dentro de un único miembro de bus de clúster
- El bean controlado por mensajes sólo se controla en dichos servidores del miembro de bus de clúster que aloja un motor de mensajería iniciado.
Es la opción predeterminada. Si el bean controlado por mensajes se despliega en un miembro de bus de clúster, sólo los puntos finales de MDB de los servidores que tienen un motor de mensajería iniciado localmente pueden optar a ser controlados por mensajes disponibles.
En la figura 2, un miembro de bus de clúster contiene tres servidores. Tanto server1 como server2 contienen un motor de mensajería activo y de migración tras error. Los puntos finales de MDB que se ejecutan en esos dos servidores están conectados a sus respectivos motores de mensajería locales. server3 no aloja un motor de mensajería iniciado, pero aloja dos motores de mensajería de migración tras error. No tiene un punto final de MDB activo y no es apto para consumir mensajes.
Figura 2. MDB se controla mediante servidores del miembro de bus de clúster que aloja un motor de mensajería iniciado (configuración 1)Esta configuración también proporciona una alta disponibilidad de la aplicación MDB, y de los mensajes en el destino de bus, si los motores de mensajería pueden ejecutar la migración tras error entre los servidores del clúster.
En la figura 3, el miembro de bus de clúster se muestra como en la figura anterior. El motor de mensajería de server1 ha realizado una migración tras error al server2. Por tanto, server2 ahora contiene dos motores de mensajería y el punto final de MDB que se ejecuta en server2 ahora se conecta a los dos motores de mensajería locales. El tercer servidor, que no aloja ningún motor de mensajería iniciado, no tiene un punto final de MDB activo y no es apto para consumir mensajes.
Figura 3. MDB se controla mediante servidores del miembro de bus de clúster que aloja un motor de mensajería iniciado (configuración 2)Esta configuración se habilita a menos que se seleccione la opción Activar siempre los MDB en todos los servidores en la especificación de activación.
- Todos los servidores de un miembro de bus de clúster pueden recibir los mensajes procedentes de un bean controlado por mensajes.
Puede establecer los puntos finales de MDB en todos los servidores del clúster como aptos para ser controlados por mensajes, independientemente de si hay un motor de mensajería iniciado local. Cualquier punto final de MDB de un servidor que no tenga un motor de mensajería iniciado se conecta directamente a uno de los motores de mensajería de cualquier otro servidor del clúster. Este enfoque garantiza que todos los recursos disponibles del clúster se puedan utilizar para procesar los mensajes enviados a los destinos.
En la figura 4, un miembro de bus de clúster contiene tres servidores. Dos servidores contienen motores de mensajería activos. Los puntos finales de MDB de cada uno de los dos servidores están conectados a sus respectivos motores de mensajería locales. El tercer servidor, que no aloja ningún motor de mensajería iniciado, tiene la carga de trabajo equilibrada por todos los motores de mensajería disponibles del clúster. El punto final de MDB del tercer servidor se conecta a un motor de mensajería que se ejecuta en uno de los otros dos servidores.
Figura 4. Los servidores de un miembro de bus de clúster reciben mensajes procedentes de un bean controlado por mensajes.Para elegir esta configuración, seleccione la opción Activar siempre los MDB en todos los servidores en la especificación de activación.
Nota: Esta configuración consigue el mismo efecto que la configuración siguiente, en lo que se refiere a qué puntos finales MDB se controlan, (lo que también se describe en este tema): Todos los servidores de un clúster pueden recibir mensajes de los motores de mensajería de un miembro del bus del clúster.
Comportamiento de la conexión MDB: entre un clúster y un miembro de bus independiente
- Todos los servidores de un clúster pueden recibir los mensajes procedentes de motores de mensajería en un miembro de bus de clúster.
Si despliega la aplicación MDB en un clúster que no es un miembro de bus, el MDB intenta conectarse al bus desde cada servidor de aplicaciones del clúster, siguiendo las reglas de conexión descritas en Cómo se conectan las aplicaciones JMS a un motor de mensajería de un bus. Esto normalmente tiene como resultado que todos los puntos finales de MDB del clúster son controlados simultáneamente por los mensajes de un motor de mensajería activo del miembro de bus. Este enfoque garantiza que todos los recursos disponibles del clúster se pueden utilizar para procesar los mensajes enviados a los destinos del miembro de bus de clúster.
En la figura 5, un clúster contiene tres servidores, cada uno con un punto final de MDB. Un miembro de bus de clúster contiene dos servidores, y uno aloja un motor de mensajería activo. Cada uno de los tres puntos finales de MDB del clúster se conecta al motor de mensajería activo del miembro de bus del clúster.
Nota: En esta configuración es posible que no se puedan establecer conexiones con todos los motores de mensajería, por lo que puede haber un motor de mensajería que no tenga ninguna conexión, y esto puede provocar que queden mensajes abandonados. Esta situación es menos probable que se produzca si la especificación de activación que el MDB utiliza se establece en el ámbito del servidor.Figura 5. Todos los servidores del clúster reciben mensajes procedentes de motores de mensajería de un miembro de bus de clústerNota: Esta configuración consigue el mismo efecto que la configuración siguiente, en lo que se refiere a qué puntos finales MDB se controlan, (lo que también se describe en este tema): Todos los servidores de un clúster pueden recibir mensajes de los motores de mensajería de un bean controlado por mensajes.- Sólo un servidor de un clúster puede recibir los mensajes procedentes de un motor de mensajería en un miembro de bus de clúster
Para conseguir el proceso secuencial de los mensajes en el destino por un solo servidor a la vez, configure el sistema de modo que sólo un único punto final de MDB sea controlado por los mensajes en un momento dado. En este patrón, los otros puntos finales de MDB y el motor de mensajería están de hecho en espera preparados para realizar el proceso de los mensajes si server1 se detiene.
En la figura 6, un clúster contiene tres servidores, cada uno con un punto final de MDB. Un miembro de bus de clúster también contiene dos servidores, uno de los cuales tiene un motor de mensajería activo. Sólo uno de los tres puntos finales de MDB del clúster está conectado al motor de mensajería activo que se ejecuta en el miembro de bus del clúster.
Figura 6. Un solo servidor que recibe mensajes del motor de mensajería de un miembro de bus de clústerPara elegir esta configuración, debe configurar la especificación de activación de modo que los puntos finales de MDB en todos los servidores del clúster no de bus sean aptos para ser controlados por los mensajes procedentes de un motor de mensajería en el miembro de bus del clúster, y establezca la opción recibir exclusivo en el destino en el miembro de bus de clúster. Cuando uno de los puntos finales de MDB se conecta al motor de mensajería, el motor detiene la conexión de todos los demás puntos finales de MDB disponibles y continúa procesando los mensajes a través del mismo punto final de MDB.
Para conseguir el proceso secuencial de mensajes por un MDB, es posible que se deba realizar una configuración adicional. Si desea más información sobre cómo garantizar el proceso secuencial de los mensajes en un destino, consulte Clasificación de mensajes.