Transcript

JMS e MOM (Message Oriented-Middleware)Jônata Gabriel Teixeira MarcelinoJosé Salustiano Filho

Sumário• MOM (Message Oriented-Middleware)• GlassFish Enterprise Server• JMS (Java Messaging Service)• O objeto modelo JMS + Implementação

MOM (MESSAGE ORIENTED-MIDDLEWARE)

MOM (Message Oriented Middleware)É uma infraestrutura de software/cliente servidor que cria uma camada entre as

aplicaçõesde alto nível e as plataformas onde estão instaladas, por sistema de mensagens.

MOM• Sua implementação fornece um conjunto de API’s• Aumenta a portabilidade• Interoperabilidade• Flexibilidade

• Comunicação• Através de mensagens• Pela estrutura pura cliente/servidor (usando broadcast ou

multicast)• Pilhas mantidas por gestores locais: mais poderosa em termos de

aplicabilidade e versatilidade

Descrição tecnológica• A MOM está presente em ambos os lados, tanto no cliente,

quanto no servidor• Ligação peer-to-peer• Chamadas assíncronas (é possível adicionar sincronismo, usando

RPC’s)• Tipos de mensagens compartilhadas• Persistente: armazenada em memória não volátil, assim caso de

falha, os dados não são perdidos.• Não-persistente: armazenada em memória volátil

• Tipos de dados compartilhados• Dados formatados (variáveis, strings)• Pedidos de execução (chamadas a funções)• Ou ambos

Descrição tecnológica• As mensagens são transmitidas por gestores de pilhas

(Message Queue Manager ou MQM).• Fornece um ambiente para aplicações que utilizem as pilhas de

mensagem ou aplicações como MQI (Message Queue Interface)• Message Queue Interface• Providencia armazenamento fiável para as mensagens

armazenadas nas pilhas• Administra concorrentes a dados• Garante segurança e autenticidade• Providencia funções especiais de emparelhamento de mensagens

(por exemplo triggers).

Descrição tecnológica• A forma de tomar as trocas mais fiável é usar tratamento de

pilhas transacionais, o MQM envia várias mensagens para uma aplicação, se ela não conseguir receber, a parte ou o todo volta para a pilha para serem entregues depois

• Se a aplicação que corre sobre MOM não estiver disponível, então elas são guardadas numa fila onde ficam à espera que a aplicação torne disponível• Por isso que a as implementações MOM são mais apropriadas

para aplicações orientadas a eventos, ou objetos para a comunicação peer-to-peer

GLASSFISH ENTERPRISE SERVER

GlassFish

• Servidor rápido e fácil de usar, baseado na plataforma Java e da tecnologia Enterprise Edition (Java EE) para o desenvolvimento e entrega de aplicações e serviços web.

• Implementação de referência Java EE• Código aberto de nível corporativo, permitindo mais recentes

padrões e inovações do setor• Melhor desempenho• Mais confiabilidade e produtividade• Facilidade de uso superiores a uma fração do custo de

servidores de aplicações proprietários

JMS (JAVA MESSAGINS SERVICE)

JMS• Permite a criação, envio, recebimento e leitura de mensagens• O receptor recebe a mensagem através do MOM• Alguns conceitos• Produtores e consumidores (para designar um cliente como

produtor de mensagens e um componente EJB Message-Driven Bean por exemplo, como um consumidor de mensagens)

A arquitetura JMS

São composta por cinco partes: Provedor JMS, que implementa as interfaces definidas na API JMS e provê recursos para administrar esse serviço; os clientes JMS que podem ser programas ou componentes que agem como produtores e

consumidores de mensagens; as mensagens propriamente ditas que são objetos que transportam os dados do cliente para o receptor; os objetos de

administração do serviço JMS que são utilizados pelos clientes para enviar as mensagens; e os clientes nativos que são clientes que usam produtos de

Messaging nativos e não da API JMS.

Mensagens Point-To-Point (Queue)Conceito de enfileirar mensagens para serem consumidas.

Mensagens Publish/Subscribe - Publica/Inscreve (Topic)

O OBJETO MODELO JMS + IMPLEMENTAÇÃO

O objeto modelo JMS + Implemetação• ConnectionFactory• Cria conexão com um provedor JMS, ele suporta uso consecutivo

e contém parâmetros de configuração de conexão que foram definidos por um administrador. Esta interface não define qualquer método e tem duas sub-interfaces diretas: TopicConnectionFactory e QueueConnectionFactory.

• Destination• É um objeto administrado que encapsula a identidade do destino

das mensagens, que é onde as mensagens são enviadas e consumidas. Pode ser uma fila ou um tópico. O administrador JMS cria estes objetos, e os usuários os obtém através de buscas na JNDI. Da mesma forma que as factories de conexões, o administrador pode criar dois tipos de classe de destino, fila (Queue) e tópico (Topic).

O objeto modelo JMS + Implemetação• Connection• Um objeto Connection representa uma conexão ativa do cliente

JMS com um provedor JMS. Tipicamente, ele é um soquete TCP/IP entre um cliente JMS e um provedor JMS. Os objetos Connection suportam uso consecutivo e são representados pela interface javax.jms.

• Session• Um objeto Session é um contexto de sequenciamento único para

produzir e consumir mensagens. Um objeto Session é representado pela interface Session.• transacted: Esse parâmetro indica se a sessão é transacionada.• acknowledgeMode: Esse parâmetro indica se consumidor ou o

cliente reconhecerão mensagens que recebem. O seu valor pode ser um dos três campos da interface Session.

O objeto modelo JMS + Implemetação

• transacted: Esse parâmetro indica se a sessão é transacionada.• acknowledgeMode: Esse parâmetro indica se consumidor ou o

cliente reconhecerão mensagens que recebem. O seu valor pode ser um dos três campos da interface Session.

• AUTO_ACKNOWLEDGE: Automaticamente a sessão acusa o recebimento do cliente de uma mensagem ou, quando a sessão foi retornada com sucesso, de uma chamada a receber ou, quando o receptor de mensagem da sessão, chamado para processar a mensagem, retorna com sucesso.

• CLIENT_ACKNOWLEDGE: O cliente acusa o recebimento de uma mensagem consumida, chamando o método acknowledge da mensagem.

• DUPS_OK_ACKNOWLEDGE: Esse modo de acusar recebimento instrui a sessão para receber vagarosamente a entrega de mensagem.

O objeto modelo JMS + Implemetação• MessageProducer• Um objeto MessageProducer é usado por um cliente JMS para

enviar mensagens a um destino.• QueueSender: Você usa essa interface no domínio point-to-point.• TopicPublisher: Você usa essa interface no domínio

Publish/Subscribe.

• MessageConsumer• Um objeto é usado por um cliente JMS para receber mensagem

de um destino.• QueueReceiver: Você usa essa interface no domínio point-to-point.• TopicSubscriber: Você usa essa interface no domínio

Publish/Subscribe.

O objeto modelo JMS + Implemetação• Message• Conteúdo a ser enviado para o destino

• TextMessage: Uma mensagem contendo uma string.• MapMessage: Uma mensagem contendo pares nome/valor. Cada

nome é um objeto string e cada valor é um tipo primitivo Java.• BytesMessage: Uma mensagem contendo uma corrente de bytes

não interpretados.• StreamMessage: Uma mensagem contendo uma corrente de valores

primitivos Java.• ObjectMessage: Uma mensagem contendo um objeto que pode ser

em série.

top related