java message service (jms)java message service (jms) disciplina de sistemas distribuídos prof....

Post on 09-Mar-2020

11 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related