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

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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

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