Gerenciando Mensagens com Terminais de Mensagens
Gerencie a entrega de mensagens para MDBs (beans acionados por mensagens) que são implementados como terminais de mensagens. Os terminais de mensagens são MBeans (managed beans) para adaptadores de recursos de entrada que são compatíveis com JCA (Java™ EE (Java Platform, Enterprise Edition) Connector Architecture) Versão 1.5.
Sobre Esta Tarefa
- Mensagens com falha requerem processamento adicional, como entregá-las no terminal de atendimento novamente ou redirecioná-las para destinos alternativos que processam mensagens com falha. Além disso, um adaptador de recursos pode entregar uma mensagem novamente para um terminal infinitas vezes.
- O redirecionamento das mensagens requer a implementação de destinos especializados (filas e listeners) para processar mensagens com falha, assim como a lógica para detectar falhas de mensagens. O redirecionamento de mensagens é propenso a erros e computacionalmente caro devido a sua complexidade.
A capacidade de desativar (pausar) e reativar (retomar) um terminal de mensagem específico ameniza esses problemas, permitindo que o administrador desative o terminal para não processar mensagens que poderão falhar. Quando o terminal de mensagens é desativado, é possível corrigir o recurso que está causando os problemas e reativar o terminal para retomar o controle dos pedidos de mensagens. Durante a resolução de problemas, você não afetará o adaptador de recursos nem o aplicativo que está hospedando o terminal.
Se estiver conectando ao WebSphere MQ, você também pode usar a propriedade customizada WAS_EndpointInitialState na especificação de ativação para fazer com que o terminal de mensagem inicie em um estado desativado. Quando definir essa propriedade para Inativa, o bean acionado por mensagens conecta com o destino, mas não inicia recebendo mensagens. Utilize essa configuração para desativar automaticamente um terminal de mensagem quando souber que certas tarefas devem ser concluídas, serviços devem ser iniciados ou verificações devem ser feitas antes que a manipulação da mensagem comece. Você ativa o terminal de mensagem da mesma forma que reativaria um terminal de mensagem que pausou durante sua operação.
Procedimento
Resultados
- Atendimento de MDB em um tópico não durável (dependente da configuração): O comportamento decorrente da desativação (pausa) de um terminal de mensagem sempre depende da função exercida. Por exemplo, se você tiver configurado um bean acionado por mensagens para atender em um tópico não durável no barramento de integração de serviços, desativar o terminal de mensagem será o mesmo que parar o aplicativo e causará o fechamento da assinatura. Isso significa que quaisquer mensagens publicadas durante a pausa do terminal de mensagem não serão recebidas pelo bean acionado por mensagens.
- Bean acionado por mensagens em cluster (dependente da topologia): Neste cenário, um aplicativo de bean acionado por mensagens foi implementado em um cluster de servidores. Um MBean de terminal de mensagem específico controla somente o comportamento do MDB em um servidor do cluster, portanto, você fará com que apenas um servidor pare de processar mensagens. Dependendo da configuração do sistema de mensagens e do adaptador de recursos específico em uso, as mensagens que teriam sido absorvidas pelo terminal de mensagem pausado poderão ser absorvidas pelos terminais de mensagens ativos no cluster, ou poderão permanecer não absorvidas até o terminal de mensagem pausado ser retomado.
- Bean acionado por mensagens em cluster, uma fila não em cluster: Neste cenário, há um cluster de servidores com o mesmo bean acionado por mensagens implementado para eles. É semelhante ao caso em que há diferentes beans acionados por mensagens com os mesmos critérios de seleção de mensagens, porém neste caso os beans acionados por mensagens são logicamente o mesmo bean acionado por mensagens. Pausar o terminal fará com que apenas um dos servidores pare de receber mensagens e os outros beans acionados por mensagens recebam todas as mensagens; nenhuma das mensagens ficará órfã. Para parar todos os terminais, instrua cada servidor do cluster a parar o terminal de mensagem local.
- Bean acionado por mensagens em cluster, fila em cluster: Neste cenário, cada bean acionado por mensagens puxa mensagens de uma partição diferente da fila. O sistema de mensagens através do WebSphere MQ e do Barramento de Integração de Serviços tem recursos semelhantes, com algumas diferenças. Se estiver utilizando o WebSphere MQ, pausar um terminal não permitirá que outras instâncias do bean acionado por mensagens recebam as mensagens. No Barramento de Integração de Serviços, as mensagens de um terminal pausado serão redirecionadas para outros beans acionados por mensagens.