Top Banner
JMS e MOM (Message Oriented- Middleware) Jônata Gabriel Teixeira Marcelino José Salustiano Filho
21
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Jms e MOM (Message Oriented Middleware)

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

Page 2: Jms e MOM (Message Oriented Middleware)

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

Page 3: Jms e MOM (Message Oriented Middleware)

MOM (MESSAGE ORIENTED-MIDDLEWARE)

Page 4: Jms e 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.

Page 5: Jms e MOM (Message Oriented Middleware)

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

Page 6: Jms e MOM (Message Oriented Middleware)

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

Page 7: Jms e MOM (Message Oriented Middleware)

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).

Page 8: Jms e MOM (Message Oriented Middleware)

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

Page 9: Jms e MOM (Message Oriented Middleware)

GLASSFISH ENTERPRISE SERVER

Page 10: Jms e MOM (Message Oriented Middleware)

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

Page 11: Jms e MOM (Message Oriented Middleware)

JMS (JAVA MESSAGINS SERVICE)

Page 12: Jms e MOM (Message Oriented Middleware)

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)

Page 13: Jms e MOM (Message Oriented Middleware)

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.

Page 14: Jms e MOM (Message Oriented Middleware)

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

Page 15: Jms e MOM (Message Oriented Middleware)

Mensagens Publish/Subscribe - Publica/Inscreve (Topic)

Page 16: Jms e MOM (Message Oriented Middleware)

O OBJETO MODELO JMS + IMPLEMENTAÇÃO

Page 17: Jms e MOM (Message Oriented Middleware)

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).

Page 18: Jms e MOM (Message Oriented Middleware)

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.

Page 19: Jms e MOM (Message Oriented Middleware)

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.

Page 20: Jms e MOM (Message Oriented Middleware)

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.

Page 21: Jms e MOM (Message Oriented Middleware)

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.