Diretrizes: Identificando Beans Orientados a Mensagens
Tópicos
Introdução
Essa diretriz focaliza a identificação de Beans Orientados a Mensagens. Orientação adicional
sobre os Beans Orientados a Mensagens é fornecida em Diretrizes:
Beans Orientados a Mensagens. Orientação geral sobre EJBs é fornecida por Diretrizes:
Enterprise JavaBeans.
Algumas características dos beans orientados a mensagens são:
- Eles são beans sem preservação de estado.
- Eles não retornam valores ou exceções aos clientes.
- Eles não possuem interfaces, uma vez que os clientes não acessam
os beans orientados a mensagens diretamente, mas indiretamente, pelo envio de mensagens para o destino
(ou nó de extremidade) atendido pelo bean. Há um método de listener ("onMessage()"
no caso de bean orientado a mensagens do JMS) que manipula genericamente qualquer mensagem.
Isso significa que a verificação do tipo tem que ser executada no tempo de execução, utilizando a operação "instanceOf()"
para determinar o tipo de uma mensagem recebida.
As mensagens podem ser enviadas para o contêiner de qualquer lugar, incluindo de
outros EJBs, de componentes da Web e de clientes aplicativos. O contêiner chama os EJBs orientados
a mensagens, conforme necessário, para manipular os eventos de mensagem que chegam. Os EJBs orientados
a mensagens podem acessar outros EJBs de sessão ou de entidade ou a camada EIS diretamente para processar
as mensagens.
Identificando Beans Orientados a Mensagens
Os beans orientados a mensagens fornecem uma maneira de manipular as mensagens assincronicamente. Os beans de
Sessão e de Entidade só podem ser chamados sincronicamente. Os beans orientados a mensagens são
identificados como parte da definição de coincidência para o sistema geral. Consulte Diretrizes:
Coincidência para obter diretrizes gerais sobre coincidência, como padrões de design
para o desacoplamento de código do responsável pela chamada e código chamado. Os beans orientados a mensagens são normalmente identificados
como parte de Atividade: Descrever a Arquitetura do
Tempo de Execução, como um meio de fornecer coincidência no contêiner EJB.
Como tal, eles não são geralmente identificados diretamente a partir das classes de análise, mas
em vez disso, são identificados para solucionar problemas específicos de design, como questões de
desempenho e de acoplamento.
Alguns motivos para introduzir os beans orientados a mensagens:
- Problemas distintos entre diferentes áreas do software - pode enviar uma mensagem
para uma fila sem ser acoplado ao consumidor dessas mensagens. Também é possível
suportar vários emissores e receptores.
- Aumento no desempenho, permitindo que o emissor da mensagem execute processamento
em vez de ser bloqueado em uma chamada síncrona (tal como ocorre em uma chamada
de um bean de Entidade ou de Sessão).
- Aumento na confiabilidade, permitindo que o emissor da mensagem continue a funcionar
mesmo que os consumidores de mensagens estejam off-line.
- Outras vantagens podem ser oferecidas pelo MOM (Message-oriented Middleware)
atrás da interface do sistema de mensagens - como
a entrega garantida de mensagens.
- Existe um elemento de design (como um sistema legado) que utiliza
o sistema de mensagens para comunicação.
Modelando Beans Orientados a Mensagens
Consulte Diretrizes: Identificando EJBs (Enterprise JavaBeans)
para obter orientação geral sobre a modelagem de EJBs. Observe, entretanto, que os beans orientados a mensagens
são geralmente modelados como parte da Visualização do Processo. Para obter orientação específica sobre
a modelagem de beans orientados a mensagens na Visualização do Processo, consulte Diretrizes:
Descrevendo a Arquitetura de Tempo de Execução para Aplicativos J2EE.
Retornando Resultados aos Emissores de Mensagens
Os beans orientados a mensagens não podem enviar respostas diretamente para o emissor de mensagens.
Uma estratégia comum para enviar uma resposta é introduzir outro
destino ou nó de extremidade para as respostas. Consulte [ROM02]
para obter detalhes adicionais sobre essa estratégia.
|