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

34
Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes

Upload: others

Post on 09-Mar-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Java Message Service (JMS)

Disciplina de Sistemas DistribuídosProf. Cristiano André da Costa

Luiz Henrique Feltes

Page 2: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

• 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

Page 3: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 4: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Introdução

4

Page 5: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 6: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 7: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 8: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Arquitetura

• Existem dois modelos de arquitetura:

• Point-to-Point (ou modelo de filas);

• Publish and Subscribe;

8

Page 9: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 10: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 11: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Arquitetura

• Point-to-Point

• Filas retêm mensagens até que sejam consumidas (ou expirem)

Produtor 1

Consumidor 1Fila

Produtor 2

11

Page 12: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Arquitetura

• Point-to-Point

12

Page 13: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 14: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 15: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Arquitetura

• Publish and Subscribe

• Publicador e o assinante não se conhecem;

Produtor 1 Consumidor 1

Canal

Consumidor 2Produtor 2

15

Page 16: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Arquitetura

• Publish and Subscribe

16

Page 17: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 18: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 19: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Vantagens

• Flexibilidade:

• API é definida pelo tipo de mensagens (não por interface)

• Comunicação é a mensagem, não importa linguagem, plataforma, etc;

19

Page 20: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 21: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 22: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Componentes do JMS

22

Page 23: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

• A mensagem JMS é composta de três partes:

• Cabeçalho

• Propriedades

• Corpo

Componentes do JMS

23

Page 24: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

• 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

Page 25: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

• 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

Page 26: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

• Corpo:

• Define o tipo de mensagem. Existem 6 tipos de mensagens:

• TextMessage;• MapMessage;• BytesMessage;• StreamMessage;• ObjectMessage;

Componentes do JMS

26

Page 27: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Componentes do JMS

27

Page 28: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Componentes do JMS

28

Page 29: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Componentes do JMS

• Tratamento de excessões:

• Exception genérica: JMSException

• Subclasses:• InvalidClientIDException;• InvalidDestinationException;• JMSSecurityExecption;• MessageFormatException;• MessageEOFException;

29

Page 30: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Códigos fonte de exemplo

• Point-to-Point:

• QSender;• QProvider;

• Publish and Subscribe:

• TPublisher;• TSubscriber;

30

Page 31: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 32: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 33: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

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

Page 34: Java Message Service (JMS)Java Message Service (JMS) Disciplina de Sistemas Distribuídos Prof. Cristiano André da Costa Luiz Henrique Feltes •Introdução;

Java Message Service (JMS)

Disciplina de Sistemas DistribuídosProf. Cristiano André da Costa

Luiz Henrique Feltes