Como um Bean Acionado por Mensagem Conecta-se em um Cluster
Quando um aplicativo EJB (enterprise bean) é implementado para um cluster do servidor de aplicativo, o aplicativo pode executar em qualquer um dos servidores no cluster para fornecer alta disponibilidade e escalabilidade do aplicativo. Quando o aplicativo EJB é um bean acionado por mensagem (MDB), ele pode executar em qualquer um dos servidores no cluster (para alta disponibilidade) e pode ser chamado simultaneamente em vários servidores de aplicativos no cluster (para escalabilidade). Esse comportamento depende do local do MDB em relação a qualquer membro do barramento de integração de serviço e na configuração do próprio MDB.
Por padrão, quando um aplicativo MDB é implementado em um cluster do servidor de aplicativos, que também é um membro do barramento de cluster do barramento de integração de serviços, o aplicativo MDB conecta-se a ou mais mecanismos do sistema de mensagens em servidores dentro do cluster. O comportamento da conexão padrão e o controle de conexão extra, que podem ser aplicados a qualquer aplicativo de JMS, inclusive os beans acionados por mensagem, estão descritos em Como os Aplicativos JMS Conectam a um Mecanismo do Sistema de Mensagens em um Barramento. No entanto, se você usar as opções de configuração descritas neste tópico, o bean acionado por mensagens será acionado apenas nos servidores do cluster que hospedarem um mecanismo do sistema de mensagens iniciado.
- Todos os servidores do cluster podem receber mensagens do aplicativo MDB, para fazer uso completo da força de processamento do cluster.
- Apenas um servidor por vez pode receber mensagens do aplicativo MDB, para garantir o processamento seqüencial das mensagens.
- Comportamento da Conexão MDB: Em um Único Membro de Barramento do Cluster
- Comportamento de conexão MDB: entre um cluster e um membro de barramento separado

Comportamento da Conexão MDB: Em um Único Membro de Barramento do Cluster
- O bean acionado por mensagens é ativado apenas nos servidores no membro de barramento do cluster que hospedam um mecanismo do sistema de mensagens iniciado
Esta é a opção padrão. Se o bean acionado por mensagem for implementado em um membro de barramento de cluster, somente os terminais MDB nos servidores que têm um mecanismo do sistema de mensagens iniciado localmente serão elegíveis para serem orientado a mensagens disponíveis.
Na figura 2, um membro de barramento do cluster contém três servidores. O server1 e o server2 contêm cada um mecanismo do sistema de mensagens ativo e de failover. Os terminais MDB em execução em cada um desses dois servidores conectam-se aos seus respectivos mecanismos do sistema de mensagem local. O server3 não hospeda um mecanismo do sistema de mensagens iniciado, mas está hospedando dois mecanismos de sistema de mensagens de failover. Ele não tem um terminal MDB ativo e não é elegível para consumir mensagens.
Figura 2. O MDB é acionado por servidores no membro de barramento do cluster que hospedam um mecanismo do sistema de mensagens iniciado (configuração 1)Essa configuração também fornece alta disponibilidade do aplicativo MDB e as mensagens no destino do barramento, se os mecanismos do sistema de mensagem puderem ter failover entre servidores no cluster.
Na figura 3, o membro de barramento do cluster é mostrado como na figura anterior. O mecanismo do sistema de mensagem em server1 tem failover em server2. Consequentemente, o server2 contém agora dois mecanismos de sistema de mensagens ativos e o terminal MDB em execução no server2 se conecta agora a ambos os mecanismos de sistema de mensagens local. O terceiro servidor, que não hospeda um mecanismo do sistema de mensagens iniciado, não tem um terminal MDB ativo e não é elegível para consumir mensagens.
Figura 3. O MDB é acionado por servidores no membro de barramento do cluster que hospedam um mecanismo do sistema de mensagens iniciado (configuração 2)Essa configuração é ativada, a não ser que você selecione a opção Sempre ativar MDBs em todos os servidores na especificação de ativação.
- Todos os servidores em um membro de barramento do cluster podem receber mensagens de um bean acionado por mensagens
É possível configurar os terminais MDB em todos os servidores de cluster como elegíveis a serem acionados por mensagens, independentemente de haver um mecanismo do sistema de mensagens local iniciado. Qualquer terminal MDB em um servidor que não tem um mecanismo do sistema de mensagem iniciado conecta-se diretamente a um dos mecanismos do sistema de mensagem em um dos outros servidores no cluster. Essa abordagem garante que todos os recursos disponíveis do cluster possam ser utilizados para processar as mensagens enviadas para os destinos.
Na figura 4, um membro de barramento do cluster contém três servidores. Dois servidores contêm mecanismos de sistema de mensagens ativos. Os terminais MDB em cada um desses dois servidores conectam-se a seus respectivos mecanismos de sistema de mensagens local. A carga de trabalho do terceiro servidor, que não hospeda um mecanismo do sistema de mensagens iniciado, é equilibrada nos mecanismos do sistema de mensagens disponíveis no cluster. O terminal MDB no terceiro servidor está conectado a um mecanismo do sistema de mensagens em execução em um dos outros dois servidores.
Figura 4. Os servidores em um membro de barramento do cluster recebem mensagens de um bean acionado por mensagensPara escolher essa configuração, você seleciona a opção Sempre ativar MDBs em todos os servidores na especificação de ativação.
Nota: Esta configuração alcança o mesmo efeito, em termos de quais terminais de MDB são acionados, do que a seguinte configuração (também descrita neste tópico): Todos os servidores em um cluster podem receber mensagens de mecanismos do sistema de mensagens em um membro do barramento de cluster.
Comportamento de conexão MDB: entre um cluster e um membro de barramento separado
- Todos os servidores em um cluster podem receber mensagens de mecanismos do sistema de mensagens em um membro de barramento do cluster
Se você implementa o aplicativo MDB em um cluster que não é um membro de barramento, o MDB tenta se conectar ao barramento de cada servidor de aplicativo no cluster, seguindo as regras de conexão descritas em Como os Aplicativos JMS Conectam a um Mecanismo do Sistema de Mensagens em um Barramento. Isso geralmente resulta em todos os terminais MDB no cluster que está sendo orientado no momento pelas mensagens de um mecanismo do sistema de mensagem ativo no membro de barramento. Essa abordagem garante que todos os recursos disponíveis do cluster possam ser utilizados para processar as mensagens enviadas para os destinos no membro de barramento do cluster.
Na figura 5, um cluster contém três servidores, cada um com um terminal MDB. Um membro de barramento do cluster contém dois servidores, e um hospeda um mecanismo do sistema de mensagens ativo. Cada um dos três terminais MDB do cluster se conecta ao mecanismo do sistema de mensagens ativo no membro de barramento do cluster.
Nota: Nesta configuração, as conexões podem não ser feitas com todos os mecanismos do sistema de mensagens, portanto, poderia haver um mecanismos de sistema de mensagens sem nenhuma conexão, podendo resultar em mensagens isoladas. É menos provável que esta situação ocorra se a especificação de ativação usada pelo MDB estiver configurada como escopo do servidor.Figura 5. Todos os servidores no cluster recebem mensagens dos mecanismos do sistema de mensagens em um membro de barramento do clusterNota: Esta configuração alcança o mesmo efeito, em termos de quais terminais de MDB são acionados, do que a seguinte configuração (também descrita neste tópico): Todos os servidores em um membro do barramento de cluster podem receber mensagens de um bean acionado por mensagens.- Apenas um servidor em um cluster pode receber mensagens de um mecanismo do sistema de mensagens em um membro de barramento do cluster
Para obter o processamento seqüencial das mensagens no destino por um único servidor por vez, configure o sistema para que apenas um único terminal MDB seja orientado por mensagens por vez. Nesse padrão, os outros terminais MDB e o mecanismo do sistema de mensagens estão efetivamente em espera e prontos para assumir o processamento de mensagens se server1 parar.
Na figura 6, um cluster contém três servidores, cada um com um terminal MDB. Um membro de barramento do cluster também contém dois servidores, um dos quais tem um mecanismo do sistema de mensagens ativo. Somente um dos três terminais MDB no cluster está conectado ao mecanismo do sistema de mensagens ativo em execução no membro de barramento do cluster.
Figura 6. Um servidor recebendo mensagens do mecanismo do sistema de mensagens em um membro de barramento do clusterPara escolher essa configuração, você configura a especificação de ativação para que os terminais MDB em todos os servidores de cluster de não barramento sejam elegíveis para acionamento por mensagens de um mecanismo do sistema de mensagens no membro de barramento do cluster, e configura a opção receive exclusive no destino no membro de barramento do cluster. Quando um dos terminais MDB se conecta ao mecanismo do sistema de mensagens, o mecanismo pára todos os outros terminais MDB disponíveis da conexão e continua processando as mensagens pelo mesmo terminal MDB.
Para obter processamento seqüencial de mensagens por um MDB, configuração adicional pode ser necessária. Para obter informações adicionais sobre a garantia do processamento seqüencial das mensagens em um destino, consulte Sequência da Mensagem.