Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Java Message Service (JMS)
Disciplina de Sistemas DistribuídosProf. Cristiano André da Costa
Luiz Henrique Feltes
• Introdução;
• Arquitetura;
• Vantagens / Desvantagens;
• Componentes do JMS;
• Códigos fonte de exemplo;
• Comparação do JMS com RMI/RPC;
• Considerações finais.
Roteiro
2
Introdução
• MOM (Message Oriented Middleware)
• Comunicação entre aplicações por troca de mensagens;
• Portabilidade, interoperabilidade;
• Reduz a complexidade da implementação de comunicação das aplicações;
3
Introdução
4
Introdução
• Um exemplo de uso do MOM:
• Montadora precisa distribuir uma lista de preço a todas as concessionárias;
• Se a comunicação fosse por exemplo com RMI/RPC, montadora e concessionária deveriam estar conectadas no momento;
5
Introdução
• Um exemplo de uso do MOM:
• No caso do MOM, a montadora produz uma mensagem com a nova lista, sem necessidade de estar conectada as concessionárias;
• O MOM fica encarregado de entregar a mensagem as concessionárias, quando estiverem disponíveis para receber;
6
Introdução
• JMS (Java Message Service) – API Java J2EE;
• Duas ou mais aplicações podem se comunicar por mensagens;
• A troca de mensagem é de forma assíncrona;
• Possibilidade de comunicação a EJBs;
7
Arquitetura
• Existem dois modelos de arquitetura:
• Point-to-Point (ou modelo de filas);
• Publish and Subscribe;
8
Arquitetura
• Point-to-Point
• Analogia: Similar ao envio de uma correspondência;
• Produtor envia mensagens para uma fila e um consumir lê;
• Produtor conhece o destino e envia diretamente para a fila;
9
Arquitetura
• Point-to-Point
• Apenas um consumidor pode ler a mensagem;
• Não é necessário que o produtor esteja conectado quando a mensagem for lida pelo consumidor e vice-versa;
• Quando mensagem é lida com sucesso o consumidor avisa o produtor (acknowledgement);
10
Arquitetura
• Point-to-Point
• Filas retêm mensagens até que sejam consumidas (ou expirem)
Produtor 1
Consumidor 1Fila
Produtor 2
11
Arquitetura
• Point-to-Point
12
Arquitetura
• Publish and Subscribe
• Analogia: Similar ao sistema de assistir canal de TV por assinatura;
• Assinante registra o interesse em receber as mensagens;
• Publicador e assinante não se conhecem;
13
Arquitetura
• Publish and Subscribe
• Muitos para Muitos;
• Mensagens são enviadas para um canal (tópico) onde os assinantes do canal podem retirá-las;
14
Arquitetura
• Publish and Subscribe
• Publicador e o assinante não se conhecem;
Produtor 1 Consumidor 1
Canal
Consumidor 2Produtor 2
15
Arquitetura
• Publish and Subscribe
16
Vantagens
• Escalabilidade:
• Para aumentar a capacidade servidora, basta acrescentar mais servidores, sem alterar os componentes;
• Novos clientes podem se conectar para usar mensagens de outras aplicações;
• Infraestrutura é reutilizada para outras aplicações;
17
Vantagens
• Comunicação assíncrona:
• Componentes podem realizar outras tarefas quando não estão ocupados lidando com as requisições;
• Desacoplamento:
• Maior modularidade, reuso, simplicidade;
• Servidor de messaging é o responsável pelo serviço;
18
Vantagens
• Flexibilidade:
• API é definida pelo tipo de mensagens (não por interface)
• Comunicação é a mensagem, não importa linguagem, plataforma, etc;
19
Desvantagens
• Camada adicional para repassar as mensagens;
• Centralização em um único ponto introduz risco de falha do sistema caso serviço de mensagem falhe;
• Solução: Replicação, clustering;
• Dificulta a criação de aplicações que precisam de comunicação síncronas;
20
Componentes do JMS
• JMS Provider• É o sistema de mensagens em si;
• Cliente JMS• São as aplicações Java que enviam e recebem as mensagens;
• Mensagens• São os objetos enviados para as aplicações clientes;
21
Componentes do JMS
22
• A mensagem JMS é composta de três partes:
• Cabeçalho
• Propriedades
• Corpo
Componentes do JMS
23
• Cabeçalho:
• Está presente em todas as mensagens;
• Informações de identificação e direcionamento das mensagens;
• Produzido pela aplicação produtora de mensagem;
Componentes do JMS
24
• Propriedades:
• É opcional; Pode ser considerada uma extensão do cabeçalho;
• Contém valores que aplicações consumidoras podem utilizar para filtragem das mensagens;
• Podem oferecer informações como: data/hora mensagem foi enviada;
Componentes do JMS
25
• Corpo:
• Define o tipo de mensagem. Existem 6 tipos de mensagens:
• TextMessage;• MapMessage;• BytesMessage;• StreamMessage;• ObjectMessage;
Componentes do JMS
26
Componentes do JMS
27
Componentes do JMS
28
Componentes do JMS
• Tratamento de excessões:
• Exception genérica: JMSException
• Subclasses:• InvalidClientIDException;• InvalidDestinationException;• JMSSecurityExecption;• MessageFormatException;• MessageEOFException;
29
Códigos fonte de exemplo
• Point-to-Point:
• QSender;• QProvider;
• Publish and Subscribe:
• TPublisher;• TSubscriber;
30
Comparação do JMS com RMI/RPC
• JMS• Mensagens são representadas como eventos;• Interface é genérica;• Arquitetura é centralizada (tudo passa pelo MOM);
• RMI/RPC• Mensagens são invocações a métodos;• Aplicação se comunica por uma interface definida;• Comunicação é síncrona;• Aplicações precisam estar conectadas;
31
Considerações finais
• Quando a comunicação depende mais de mensagens do que interface definidas (componentes não dependem da interface de outros componentes);
• Quando a disponibilidade é imprevisível ou aplicação precisa rodar quando nem todos componentes estão acessíveis;
• Quando precisa ter um comportamento assíncrono;
32
Referências
• Kim Haase - JMS API Tutorial -http://download.oracle.com/javaee/1.3/jms/tutorial
• Sun - Java Message Service -http://www.faa.gov/about/office_org/headquarters_offices/ato/service_units/techops/atc_comms_services/swim/documentation/media/compliancy/jms-1_1-fr-spec.pdf
• Helder Rocha -www.argonavis.com.br/cursos/java/j530/j530_9_JMS.pdf
33
Java Message Service (JMS)
Disciplina de Sistemas DistribuídosProf. Cristiano André da Costa
Luiz Henrique Feltes