SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Comunicação Distribuída – Middleware - JMS
                   Prof. Adriano Teixeira de Souza
   Método de comunicação entre componentes ou
    aplicações
    ◦ ƒ Arquitetura peer-to-peer com serviço centralizado para
      repasse de mensagens recebidas e enviadas
    ◦ ƒ Clientes e servidores enviam e recebem mensagens para
      canais administrados por serviço central de mensagens
      (MOM)
   Viabiliza comunicação distribuída com
    acoplamento fraco
    ◦ ƒ Interface genérica: MOM ignora conteúdo e repassa
      qualquer coisa. Formato do conteúdo deve ser conhecido
      pelas partes
    ◦ ƒ Assíncrona: Comunicação pode ocorrer mesmo que o
      cliente e servidor não estejam disponíveis ao mesmo tempo

                                 Prof. Adriano Teixeira de Souza
   Sistemas de messaging são freqüentemente
    chamados de Message-Oriented Middleware (MOM)
    ◦ ƒ Conceito não é novo: já existiam há algum tempo em
      implementações proprietárias (e incompatíveis)
    ◦ ƒ JMS API: solução independente de fabricante para acessar
      serviços MOM a partir de clientes Java

   Alguns produtos MOM compatíveis com JMS:
    ◦ ƒ Open source: JBossMQ, OpenJMS, JORAM
    ◦ ƒ IBM MQSeries, IPlanet MQ, Bea WebLogic, HP-MS, Progress
      SoniqMQ
    ◦ ƒ Mais em: java.sun.com/products/jms/



                                 Prof. Adriano Teixeira de Souza
   Escalabilidade
    ◦ Para aumentar a capacidade servidora, basta acrescentar
      mais servidores (não é preciso mexer nos componentes)
    ◦ Novos clientes podem se conectar para usar mensagens em
      outras aplicações
    ◦ Infraestrutura é reutilizada para novas aplicações

   Comunicação assíncrona
    ◦ ƒ Componentes podem realizar outras tarefas enquanto não
      estão ocupados lidando com requisições
    ◦ Podem sondar o servidor em busca de novas mensagens
      quando estiverem livres (PTP)
    ◦ Podem se cadastrar para, quando houver mensagens
      novas, receber notificação (pub/sub)


                                Prof. Adriano Teixeira de Souza
   Desacoplamento
    ◦ ƒ Maior modularidade, maior reuso
      (substituibilidade), maior simplicidade, maior robustez
      (falhas localizadas)
    ◦ ƒ Papéis bem definidos simplificam o desenvolvimento:
      produtor, consumidor e serviço tem única
      interface, independente da aplicação
    ◦ ƒ Servidor de messaging é responsável pela qualidade do
      serviço (não é preocupação dos componentes)

   Flexibilidade
    ◦ ƒ API definida pelo tipo das mensagens (e não por
      interfaces)
    ◦ ƒ Meio comum é a mensagem: se componentes a
      entendem, o resto (linguagens, plataformas, etc.) não
      importa                      Prof. Adriano Teixeira de Souza
   Desvantagens
    ◦ ƒ Camada adicional para repasse de mensagens ƒ
    ◦ Centralização em único ponto introduz risco de falha de todo
      o sistema caso o serviço de mensagens falhe
       Solução: replicação, clustering

   Desvantagens relativas
    ◦ Muito genérica: aplicações precisam decifrar as mensagens
      para que possam operar; esconde a interface de programação
      remota dentro das mensagens
    ◦ ƒ Comunicação assíncrona (geralmente): dificulta a criação de
      aplicações que necessitam de comunicação síncrona.
    ◦ ƒ Não faz tratamento de representação de dados (data
      marshalling) - MOM é apenas meio de transporte

                                 Prof. Adriano Teixeira de Souza
   Mensagens são uma alternativa a invocação
    de métodos remotos.

   A idéia é inserir uma camada entre o cliente e
    o servidor
Invocação de método remoto

       Aplicação                                           Aplicação



Messaging
                              Message
       Aplicação             Middleware                     Aplicação



                                 Prof. Adriano Teixeira de Souza
   Vantagens

    ◦ Processos não bloqueáveis

    ◦ Garantia de entrega

    ◦ Suporte a múltiplos emissores e receptores




                             Prof. Adriano Teixeira de Souza
   JMS é um padrão para Messaging

   Tem como objetivo eliminar muitas das
    desvantagem que MOMs encontraram com o
    passar dos anos

   O Desenvolvedor aprende a usar a API de JMS
    e reusa seu código com diferentes
    implementações plugáveis de MOM (idéia
    similar APIs do JEE, como JNDI e JDBC)



                         Prof. Adriano Teixeira de Souza
   Publish/subscribe(pub/sub)

    ◦ Análogo a assistir televisão. Pode haver muitos
      produtores de mensagens e muitos consumidores.



     Produtor 1                                   Consumidor 1

                         Canal

     Produtor 2                                   Consumidor 2




                            Prof. Adriano Teixeira de Souza
   Point-to-point(PTP)

    ◦    Múltiplos produtores podem enviar mensagens
         para a fila mas cada mensagem é entregue a
         apenas um consumidor

        Produtor 1
                            Fila                     Consumidor 1

        Produtor 2




                               Prof. Adriano Teixeira de Souza
   Passos
    ◦ 1. Localizar o provedor JMS, instancia de
      ConnectionFactory
    ◦ 2. Criar um conexão JMS
    ◦ 3. Criar uma Sessão JMS
    ◦ 4. Localizar o destino
    ◦ 5. Criar um JMS Provider ou um JMS Consumer
    ◦ 6. Enviar ou Receber suas mensagens




                            Prof. Adriano Teixeira de Souza
2. Criar          JMS Connection
                         conexão              Factory
                                                                                                Fila1


                         3. Criar
                                            JSM Connection
                         sessão
                                                                                                Fila2

          Cliente        5. Criar
                         producer ou          JMS Session
                         consumer                                                            Tópico1
1. Obter o
Driver JMS
                         6. Enviar ou
(ConnectionF                               JSM Prosucer ou                               Servidor JMS
                         receber
actory)                                      Consumer
                         mensagens
           4. Obter o
           destino JMS                  Driver JMS do cliente

                                        6. Enviar ou
                                        receber
                                        mensagens
          JNDI




  Serviço de nomes
                                                       Prof. Adriano Teixeira de Souza
public static void main (String[] args) throws Exception {
  TransportConfiguration transportConfiguration =
       new TransportConfiguration(NettyConnectorFactory.class.getName());

    ConnectionFactory factory = (ConnectionFactory)
         HornetQJMSClient.createConnectionFactoryWithoutHA(
                  JMSFactoryType.CF, transportConfiguration);
    //O nome da queue deve ser o nome do jms-queue em standalone.xml
    Queue queue = HornetQJMSClient.createQueue("testQueue");
    Connection connection;
    try {
      connection = factory.createConnection();
      Session session = connection.createSession(false,
                           QueueSession.AUTO_ACKNOWLEDGE);
      MessageProducer producer = session.createProducer(queue);
      TextMessage message = session.createTextMessage();
      message.setText("Hello EJB3 MDB Queue!!!");
      producer.send(message);
      session.close();
      connection.close();
    } catch (JMSException e) {
         e.printStackTrace();
    }
}


                                        Prof. Adriano Teixeira de Souza
   O que são?
    ◦ Introduzido na especificação EJB 2.0

    ◦ São componentes EJBs especiais capazes de
      receber mensagens enviadas a filas e canais JMS

    ◦ Invocados pelo Container dada a chegada de um
      mensagem ao destino que um MDB escuta
      Não se envia uma mensagem direto a um MDB(envia-se
       ao canal que o bean escuta)
      Proporcionando acoplamento fraco entre cliente e MDB
       (conhecimento do canal de comunicação)


                               Prof. Adriano Teixeira de Souza
◦ Para efetuar a comunicação é necessário o uso de
  uma API específica, como JMS



                                           Pool de MDBs


Cliente           Destino JMS



                                                     Instancias de
                                                    Message-Driven
                                                         Beans




                                Prof. Adriano Teixeira de Souza
   Características
    ◦ Não possuem interface home, local
      home, interface remota, nem interface local
    ◦ Possuem apenas um método que recebe qualquer
      tipo de mensagem
    ◦ Não têm retorno, e também não lançam exceções
      ao cliente
    ◦ São Stateless
    ◦ Podem ser ouvintes de uma fila, ou assinantes de
      um canal(Topic)



                            Prof. Adriano Teixeira de Souza
   MDBs devem implementar a interface:
    ◦ javax.jms.MessageListener


   Método de MessageListener
    ◦ onMessage(Message m): chamado cada vez que uma
      mensagem é enviada para o canal do bean (se o bean
      estiver ativado).




                                  Prof. Adriano Teixeira de Souza
@MessageDriven(name = "MessageMDBSample",
         activationConfig = {
                  @ActivationConfigProperty(propertyName = "destinationType",
                                            propertyValue = "javax.jms.Queue"),
                  @ActivationConfigProperty(propertyName = "destination",
                                            propertyValue = "queue/test"),
         })
public class MDBSample implements MessageListener {

    public void onMessage(Message message) {

        TextMessage tm = (TextMessage) message;

        try {

          System.out.println("Received message "+tm.getText());

         } catch (Exception e) {
                  e.printStackTrace();
        }

    }
}



                                         Prof. Adriano Teixeira de Souza
   Tipos de mensagens:


Tipo de Mensagem                     Estrutura de dados compatível

     TextMessage    java.lang.String

    ObjectMessage   objeto Java serializável

    BytesMessage    array de bytes

    StreamMessage   stream de tipos primitivos Java (int, double, char, etc.)

                    Conjunto de pares name-value. Os valores tem que ser tipos
     MapMessage        primitivos Java ou
                    seus encapsulamentos OO (wrappers), como Integer, Float,
                       etc.




                                               Prof. Adriano Teixeira de Souza

Más contenido relacionado

Was ist angesagt?

ACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosUFPB
 
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisCapítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisWindson Viana
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesAdriano Teixeira de Souza
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebRafael Chagas
 
Introcucao aos Sistemas Distribuidos
Introcucao aos Sistemas DistribuidosIntrocucao aos Sistemas Distribuidos
Introcucao aos Sistemas DistribuidosValberto Carneiro
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Arthur Emanuel
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
Aula de Sistemas Distribuídos - Padrões de Projeto de Middleware
Aula de Sistemas Distribuídos - Padrões de Projeto de MiddlewareAula de Sistemas Distribuídos - Padrões de Projeto de Middleware
Aula de Sistemas Distribuídos - Padrões de Projeto de MiddlewareVictor Hazin da Rocha
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosrobsons75
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosDaniel Arndt Alves
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Arthur Emanuel
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidadeMarcelo Garcia
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosMessias Batista
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebArthur Emanuel
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidadeelliando dias
 
Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Evandro Júnior
 

Was ist angesagt? (20)

ACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidos
 
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisCapítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
Introcucao aos Sistemas Distribuidos
Introcucao aos Sistemas DistribuidosIntrocucao aos Sistemas Distribuidos
Introcucao aos Sistemas Distribuidos
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Aula de Sistemas Distribuídos - Padrões de Projeto de Middleware
Aula de Sistemas Distribuídos - Padrões de Projeto de MiddlewareAula de Sistemas Distribuídos - Padrões de Projeto de Middleware
Aula de Sistemas Distribuídos - Padrões de Projeto de Middleware
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidos
 
Clusters
ClustersClusters
Clusters
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos Distribuidos
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
 
Cluster de Alta disponibilidade
Cluster de Alta disponibilidadeCluster de Alta disponibilidade
Cluster de Alta disponibilidade
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidade
 
Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)Aula 3 (alta disponibilidade)
Aula 3 (alta disponibilidade)
 

Andere mochten auch

Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareRESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareMarcos Vinicios
 
ACII - SL03 - Armazenamento Secundario
ACII - SL03 - Armazenamento SecundarioACII - SL03 - Armazenamento Secundario
ACII - SL03 - Armazenamento SecundarioUFPB
 
SC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoSC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoUFPB
 
SC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorSC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorUFPB
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoUFPB
 
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)UFPB
 
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosSC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosUFPB
 
ACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoUFPB
 
RC - SL01 - Introdução às Redes de Computadores
RC - SL01 - Introdução às Redes de ComputadoresRC - SL01 - Introdução às Redes de Computadores
RC - SL01 - Introdução às Redes de ComputadoresUFPB
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?paxtecnologia
 
SC - EAD - SL02 - Contextualização Histórica
SC - EAD - SL02 - Contextualização HistóricaSC - EAD - SL02 - Contextualização Histórica
SC - EAD - SL02 - Contextualização HistóricaUFPB
 
RC SL04 - Camada de Rede
RC SL04 - Camada de RedeRC SL04 - Camada de Rede
RC SL04 - Camada de RedeUFPB
 
ACII - SL04 - Introducao a redes de computadores
ACII - SL04 - Introducao a redes de computadoresACII - SL04 - Introducao a redes de computadores
ACII - SL04 - Introducao a redes de computadoresUFPB
 
RC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisRC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisUFPB
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 

Andere mochten auch (20)

Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareRESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
 
Artigo sd
Artigo sdArtigo sd
Artigo sd
 
ACII - SL03 - Armazenamento Secundario
ACII - SL03 - Armazenamento SecundarioACII - SL03 - Armazenamento Secundario
ACII - SL03 - Armazenamento Secundario
 
SC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoSC - EAD - SLAP - Apresentação
SC - EAD - SLAP - Apresentação
 
SC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorSC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o Instrutor
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - Virtualizacao
 
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
 
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosSC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
 
ACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoACII - SLAP - Apresentacao
ACII - SLAP - Apresentacao
 
RC - SL01 - Introdução às Redes de Computadores
RC - SL01 - Introdução às Redes de ComputadoresRC - SL01 - Introdução às Redes de Computadores
RC - SL01 - Introdução às Redes de Computadores
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?
 
Redes Distribuidas 20set08
Redes Distribuidas 20set08Redes Distribuidas 20set08
Redes Distribuidas 20set08
 
SC - EAD - SL02 - Contextualização Histórica
SC - EAD - SL02 - Contextualização HistóricaSC - EAD - SL02 - Contextualização Histórica
SC - EAD - SL02 - Contextualização Histórica
 
RC SL04 - Camada de Rede
RC SL04 - Camada de RedeRC SL04 - Camada de Rede
RC SL04 - Camada de Rede
 
ACII - SL04 - Introducao a redes de computadores
ACII - SL04 - Introducao a redes de computadoresACII - SL04 - Introducao a redes de computadores
ACII - SL04 - Introducao a redes de computadores
 
RC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisRC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes Locais
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 

Ähnlich wie Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS

Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaPaula Santana
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveisigorpimentel
 
Carlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixCarlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixHeber Souza
 
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoMVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoRover Marinho
 
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion ToleranceVMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion ToleranceLeandro Magnabosco
 
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterAbrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterEvandro Grezeli
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxChadidoDiogo1
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Message Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQMessage Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQLuiz Carlos Faria
 

Ähnlich wie Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS (20)

Hornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de MensageriaHornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de Mensageria
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações Java
 
J530 9 jms
J530 9 jmsJ530 9 jms
J530 9 jms
 
Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
MDB
MDBMDB
MDB
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveis
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 
Carlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixCarlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - Postfix
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
 
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoMVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
 
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion ToleranceVMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
 
Sd04 (si) comunicação em sd
Sd04 (si)   comunicação em sdSd04 (si)   comunicação em sd
Sd04 (si) comunicação em sd
 
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com JmeterAbrindo a caixa de ferramentas: atirando pedras com Jmeter
Abrindo a caixa de ferramentas: atirando pedras com Jmeter
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Message Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQMessage Broker & .Net Core - Introdução ao RabbitMQ
Message Broker & .Net Core - Introdução ao RabbitMQ
 
Cloud computing foundation
Cloud computing foundationCloud computing foundation
Cloud computing foundation
 

Mehr von Adriano Teixeira de Souza

Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 

Mehr von Adriano Teixeira de Souza (20)

Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS

  • 1. Comunicação Distribuída – Middleware - JMS Prof. Adriano Teixeira de Souza
  • 2. Método de comunicação entre componentes ou aplicações ◦ ƒ Arquitetura peer-to-peer com serviço centralizado para repasse de mensagens recebidas e enviadas ◦ ƒ Clientes e servidores enviam e recebem mensagens para canais administrados por serviço central de mensagens (MOM)  Viabiliza comunicação distribuída com acoplamento fraco ◦ ƒ Interface genérica: MOM ignora conteúdo e repassa qualquer coisa. Formato do conteúdo deve ser conhecido pelas partes ◦ ƒ Assíncrona: Comunicação pode ocorrer mesmo que o cliente e servidor não estejam disponíveis ao mesmo tempo Prof. Adriano Teixeira de Souza
  • 3. Sistemas de messaging são freqüentemente chamados de Message-Oriented Middleware (MOM) ◦ ƒ Conceito não é novo: já existiam há algum tempo em implementações proprietárias (e incompatíveis) ◦ ƒ JMS API: solução independente de fabricante para acessar serviços MOM a partir de clientes Java  Alguns produtos MOM compatíveis com JMS: ◦ ƒ Open source: JBossMQ, OpenJMS, JORAM ◦ ƒ IBM MQSeries, IPlanet MQ, Bea WebLogic, HP-MS, Progress SoniqMQ ◦ ƒ Mais em: java.sun.com/products/jms/ Prof. Adriano Teixeira de Souza
  • 4. Escalabilidade ◦ Para aumentar a capacidade servidora, basta acrescentar mais servidores (não é preciso mexer nos componentes) ◦ Novos clientes podem se conectar para usar mensagens em outras aplicações ◦ Infraestrutura é reutilizada para novas aplicações  Comunicação assíncrona ◦ ƒ Componentes podem realizar outras tarefas enquanto não estão ocupados lidando com requisições ◦ Podem sondar o servidor em busca de novas mensagens quando estiverem livres (PTP) ◦ Podem se cadastrar para, quando houver mensagens novas, receber notificação (pub/sub) Prof. Adriano Teixeira de Souza
  • 5. Desacoplamento ◦ ƒ Maior modularidade, maior reuso (substituibilidade), maior simplicidade, maior robustez (falhas localizadas) ◦ ƒ Papéis bem definidos simplificam o desenvolvimento: produtor, consumidor e serviço tem única interface, independente da aplicação ◦ ƒ Servidor de messaging é responsável pela qualidade do serviço (não é preocupação dos componentes)  Flexibilidade ◦ ƒ API definida pelo tipo das mensagens (e não por interfaces) ◦ ƒ Meio comum é a mensagem: se componentes a entendem, o resto (linguagens, plataformas, etc.) não importa Prof. Adriano Teixeira de Souza
  • 6. Desvantagens ◦ ƒ Camada adicional para repasse de mensagens ƒ ◦ Centralização em único ponto introduz risco de falha de todo o sistema caso o serviço de mensagens falhe  Solução: replicação, clustering  Desvantagens relativas ◦ Muito genérica: aplicações precisam decifrar as mensagens para que possam operar; esconde a interface de programação remota dentro das mensagens ◦ ƒ Comunicação assíncrona (geralmente): dificulta a criação de aplicações que necessitam de comunicação síncrona. ◦ ƒ Não faz tratamento de representação de dados (data marshalling) - MOM é apenas meio de transporte Prof. Adriano Teixeira de Souza
  • 7. Mensagens são uma alternativa a invocação de métodos remotos.  A idéia é inserir uma camada entre o cliente e o servidor Invocação de método remoto Aplicação Aplicação Messaging Message Aplicação Middleware Aplicação Prof. Adriano Teixeira de Souza
  • 8. Vantagens ◦ Processos não bloqueáveis ◦ Garantia de entrega ◦ Suporte a múltiplos emissores e receptores Prof. Adriano Teixeira de Souza
  • 9. JMS é um padrão para Messaging  Tem como objetivo eliminar muitas das desvantagem que MOMs encontraram com o passar dos anos  O Desenvolvedor aprende a usar a API de JMS e reusa seu código com diferentes implementações plugáveis de MOM (idéia similar APIs do JEE, como JNDI e JDBC) Prof. Adriano Teixeira de Souza
  • 10. Publish/subscribe(pub/sub) ◦ Análogo a assistir televisão. Pode haver muitos produtores de mensagens e muitos consumidores. Produtor 1 Consumidor 1 Canal Produtor 2 Consumidor 2 Prof. Adriano Teixeira de Souza
  • 11. Point-to-point(PTP) ◦ Múltiplos produtores podem enviar mensagens para a fila mas cada mensagem é entregue a apenas um consumidor Produtor 1 Fila Consumidor 1 Produtor 2 Prof. Adriano Teixeira de Souza
  • 12. Passos ◦ 1. Localizar o provedor JMS, instancia de ConnectionFactory ◦ 2. Criar um conexão JMS ◦ 3. Criar uma Sessão JMS ◦ 4. Localizar o destino ◦ 5. Criar um JMS Provider ou um JMS Consumer ◦ 6. Enviar ou Receber suas mensagens Prof. Adriano Teixeira de Souza
  • 13. 2. Criar JMS Connection conexão Factory Fila1 3. Criar JSM Connection sessão Fila2 Cliente 5. Criar producer ou JMS Session consumer Tópico1 1. Obter o Driver JMS 6. Enviar ou (ConnectionF JSM Prosucer ou Servidor JMS receber actory) Consumer mensagens 4. Obter o destino JMS Driver JMS do cliente 6. Enviar ou receber mensagens JNDI Serviço de nomes Prof. Adriano Teixeira de Souza
  • 14. public static void main (String[] args) throws Exception { TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName()); ConnectionFactory factory = (ConnectionFactory) HornetQJMSClient.createConnectionFactoryWithoutHA( JMSFactoryType.CF, transportConfiguration); //O nome da queue deve ser o nome do jms-queue em standalone.xml Queue queue = HornetQJMSClient.createQueue("testQueue"); Connection connection; try { connection = factory.createConnection(); Session session = connection.createSession(false, QueueSession.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue); TextMessage message = session.createTextMessage(); message.setText("Hello EJB3 MDB Queue!!!"); producer.send(message); session.close(); connection.close(); } catch (JMSException e) { e.printStackTrace(); } } Prof. Adriano Teixeira de Souza
  • 15. O que são? ◦ Introduzido na especificação EJB 2.0 ◦ São componentes EJBs especiais capazes de receber mensagens enviadas a filas e canais JMS ◦ Invocados pelo Container dada a chegada de um mensagem ao destino que um MDB escuta  Não se envia uma mensagem direto a um MDB(envia-se ao canal que o bean escuta)  Proporcionando acoplamento fraco entre cliente e MDB (conhecimento do canal de comunicação) Prof. Adriano Teixeira de Souza
  • 16. ◦ Para efetuar a comunicação é necessário o uso de uma API específica, como JMS Pool de MDBs Cliente Destino JMS Instancias de Message-Driven Beans Prof. Adriano Teixeira de Souza
  • 17. Características ◦ Não possuem interface home, local home, interface remota, nem interface local ◦ Possuem apenas um método que recebe qualquer tipo de mensagem ◦ Não têm retorno, e também não lançam exceções ao cliente ◦ São Stateless ◦ Podem ser ouvintes de uma fila, ou assinantes de um canal(Topic) Prof. Adriano Teixeira de Souza
  • 18. MDBs devem implementar a interface: ◦ javax.jms.MessageListener  Método de MessageListener ◦ onMessage(Message m): chamado cada vez que uma mensagem é enviada para o canal do bean (se o bean estiver ativado). Prof. Adriano Teixeira de Souza
  • 19. @MessageDriven(name = "MessageMDBSample", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/test"), }) public class MDBSample implements MessageListener { public void onMessage(Message message) { TextMessage tm = (TextMessage) message; try { System.out.println("Received message "+tm.getText()); } catch (Exception e) { e.printStackTrace(); } } } Prof. Adriano Teixeira de Souza
  • 20. Tipos de mensagens: Tipo de Mensagem Estrutura de dados compatível TextMessage java.lang.String ObjectMessage objeto Java serializável BytesMessage array de bytes StreamMessage stream de tipos primitivos Java (int, double, char, etc.) Conjunto de pares name-value. Os valores tem que ser tipos MapMessage primitivos Java ou seus encapsulamentos OO (wrappers), como Integer, Float, etc. Prof. Adriano Teixeira de Souza