SlideShare ist ein Scribd-Unternehmen logo
1 von 28
MDB
Message-Driven Beans
(As)síncrona


• Java RMI (comunicação síncrona)
• JMS (Java Message Service)
 (comunicação assíncrona)
Modelos de Comunicação
      Assíncrona

• Point-to-Point (PTP)
  • Queue destination
• Publish/Subscribe
  • Topic destination
Point-To-Point
• Produtor cria mensagem
• Mensagem entregue a um destino
  (neste caso um queue)

• Mensagem é colocada em “fila”
• MOM (Message-Oriented
  Middleware) entrega a mensagem a
  um consumidor registrado no destino
Publish/Subscribe

• Mensagem é entregue a um destino
 (neste caso, um topic)

• MOM entrega a mensagem a todos os
 consumidores subscritos no tópico

• Uma mensagem, vários consumidores
Casos (queue)
• Vários consumidores podem enviar
  mensagens para várias filas (queues)
• Garantia
  Cada mensagem é entregue e
  consumida por apenas um
  consumidor
• Mensagem é retida na queue até que
  haja um consumidor interessado
Casos (publish/
        subscribe)
• Mensagem tem como destino um
  tópico

• Vários consumidores podem estar
  registrados no tópico

• Se não há consumidores, a mensagem
  não é retida (exceto se a subscrição
  for durável)
Componentes de JMS

• JMS provider (implementa a
  especificação JMS)

• Clientes JMS: enviam/recebem msgs
• Mensagens: objetos usados para troca
  de informações entre clientes JMS
• Objetos administrados
  (administração)
Mensagem


• Cabeçalho (obrigatório)
• Propriedades (opcional)
• Corpo (opcional)
 • Contém a ser trocado (payload)
Tipos de mensagens
• Message (mensagem sem corpo)
• StreamMessage
• MapMessage
• TextMessage
• ObjectMessage
• ObjectMessage
• BytesMessage
Passos para produzir
• ConnectionFactory cria Connection
• Connection cria Session
• Session cria mensagem
• Obtém Destination (queue ou topic)
• Session cria MessageProducer para
  Destination

• MessageProducer envia mensagem
Passos para receber
• ConnectionFactory cria Connection
• Connection cria Session
• Session cria mensagem
• Obtém Destination (queue ou topic)
• Session cria MessageConsumer para
  Destination

• MessageConsumer recebe mensagem
Opção para receber
• Síncrona
 • Chame Connection.start()
 • MessageConsumer.receive()
• Assíncrona
 • Crie MessageListener
 • Registre MessageListener com o
   MessageConsumer

 • Chame Connection.start()
Esclarecimento

• Troca de mensagens é assíncrona
• A recepção propriamente dita de uma
  mensagem, após o envio assíncrono,
  pode ser
 • síncrona ou assíncrona
   (receive() ou via MessageListener)
Portanto...
• Point-to-Point
  • Cliente1 envia msg para queue
  • Cliente2 consome msg da queue
• Publish/subscribe
  • Cliente1 publica msg em topic
  • Cliente2,3,... assinam topic
  • MOM entrega msg aos clientes
Objetos administrados


• Fábricas de conexão
  javax.jms.ConnectionFactory
• Destinos (destination)
  javax.jms.Destination
Subinterfaces de
  javax.jms.ConnectionFactory




• javax.jms.QueueConnectionFactory
• javax.jms.TopicConnectionFactory
Cliente


• Recurso JNDI de nome x é injetado em
  cf (código abaixo)
• @Resource(mappedName=”x”)
  private static ConnectionFactory cf;
Cliente

• Destino ou fonte de mensagens
  (javax.jms.Destination)
• @Resource(mappedName=”d”)
  private static Queue queue;
• @Resource(mappedName=”f”)
  private static Topic topic;
Criando conexão

• Um ConnectionFactory permite criar
  uma conexão com o JMS provider
• javax.jms.Connection
  (representa com JMS provider)
• Connection c = cf.createConnection();
Conexão (detalhe)

• Conexão deve ser fechada
  Connection.close()
• Fecha sessões, produtores e
  consumidores associados

• Antes de consumir mensagens
  Connection.start()
Sessão

• Contexto (single-threaded) para
  produzir e consumir mensagens
• Agrupa conjunto de envios e
  recepções de mensagens em transação
• Uma sessão é criada a partir de uma
  conexão
Criando uma Session
• javax.jms.Session s;
• s = c.createSession(false,Session.AUTO_ACKNOWLEDGE);

• false (sessão não é executada no contexto
  de uma transação)
• Session.AUTO_ACKNOWLEDGE
  (mensagem foi consumida, ou seja,
  receive() ou onMessage(Message) sem
  exceções)
Usos de Session

• Criar MessageProducer
• Criar MessageConsumer
• Criar mensagens (Message)
• Criar browsers (Queue)
  Consultar msgs sem removê-las

• Criar Queues e Topics temporários
MessageProducer


• Session.createProducer(Destination)
• javax.jms.Destination (subinterfaces)
  • javax.jms.Queue
  • javax.jms.Topic
MessageConsumer


• Session.createConsumer(Destination)
• javax.jms.Destination (subinterfaces)
  • javax.jms.Queue
  • javax.jms.Topic
Com um produtor...



produtor.send(Message)
Com um consumidor...

                Síncrono

Message consumidor.receive()

               Assíncrono
consumidor.setMessageListener(listener)

Weitere ähnliche Inhalte

Andere mochten auch (14)

Javafx Gui
Javafx GuiJavafx Gui
Javafx Gui
 
Orientação a Objetos (3)
Orientação a Objetos (3)Orientação a Objetos (3)
Orientação a Objetos (3)
 
Orientação a Objetos (1)
Orientação a Objetos (1)Orientação a Objetos (1)
Orientação a Objetos (1)
 
servlet-respostas
servlet-respostasservlet-respostas
servlet-respostas
 
Cs 2
Cs 2Cs 2
Cs 2
 
Visão Geral de EJB 3.0
Visão Geral de EJB 3.0Visão Geral de EJB 3.0
Visão Geral de EJB 3.0
 
Introducao
IntroducaoIntroducao
Introducao
 
EJB
EJBEJB
EJB
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
Uml
UmlUml
Uml
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 
engenharia-de-requisitos
engenharia-de-requisitosengenharia-de-requisitos
engenharia-de-requisitos
 

Ähnlich wie MDB Assíncrona Comunicação JMS

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de 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
 

Ähnlich wie MDB Assíncrona Comunicação JMS (6)

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
J530 10 mdb
J530 10 mdbJ530 10 mdb
J530 10 mdb
 
03modelos.ppt
03modelos.ppt03modelos.ppt
03modelos.ppt
 
03modelos (1).ppt
03modelos (1).ppt03modelos (1).ppt
03modelos (1).ppt
 
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
 
Hornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de MensageriaHornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de Mensageria
 

Mehr von Fábio Nogueira de Lucena (17)

CSS
CSSCSS
CSS
 
Fundamentos de Programação Front-End
Fundamentos de Programação Front-EndFundamentos de Programação Front-End
Fundamentos de Programação Front-End
 
JavaScript: Aprendendo a programar
JavaScript: Aprendendo a programarJavaScript: Aprendendo a programar
JavaScript: Aprendendo a programar
 
HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)
 
HTTP: Um Curso Básico
HTTP: Um Curso BásicoHTTP: Um Curso Básico
HTTP: Um Curso Básico
 
Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08
 
Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017
 
Arquétipos
ArquétiposArquétipos
Arquétipos
 
Introducao integracao
Introducao integracaoIntroducao integracao
Introducao integracao
 
Healthdb Visão Geral
Healthdb Visão GeralHealthdb Visão Geral
Healthdb Visão Geral
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógico
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Prontuário Eletrônico do Paciente
Prontuário Eletrônico do PacienteProntuário Eletrônico do Paciente
Prontuário Eletrônico do Paciente
 
Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)
 
Orientação a Objetos (introdução)
Orientação a Objetos (introdução)Orientação a Objetos (introdução)
Orientação a Objetos (introdução)
 

MDB Assíncrona Comunicação JMS

  • 2. (As)síncrona • Java RMI (comunicação síncrona) • JMS (Java Message Service) (comunicação assíncrona)
  • 3. Modelos de Comunicação Assíncrona • Point-to-Point (PTP) • Queue destination • Publish/Subscribe • Topic destination
  • 4. Point-To-Point • Produtor cria mensagem • Mensagem entregue a um destino (neste caso um queue) • Mensagem é colocada em “fila” • MOM (Message-Oriented Middleware) entrega a mensagem a um consumidor registrado no destino
  • 5. Publish/Subscribe • Mensagem é entregue a um destino (neste caso, um topic) • MOM entrega a mensagem a todos os consumidores subscritos no tópico • Uma mensagem, vários consumidores
  • 6. Casos (queue) • Vários consumidores podem enviar mensagens para várias filas (queues) • Garantia Cada mensagem é entregue e consumida por apenas um consumidor • Mensagem é retida na queue até que haja um consumidor interessado
  • 7. Casos (publish/ subscribe) • Mensagem tem como destino um tópico • Vários consumidores podem estar registrados no tópico • Se não há consumidores, a mensagem não é retida (exceto se a subscrição for durável)
  • 8. Componentes de JMS • JMS provider (implementa a especificação JMS) • Clientes JMS: enviam/recebem msgs • Mensagens: objetos usados para troca de informações entre clientes JMS • Objetos administrados (administração)
  • 9. Mensagem • Cabeçalho (obrigatório) • Propriedades (opcional) • Corpo (opcional) • Contém a ser trocado (payload)
  • 10. Tipos de mensagens • Message (mensagem sem corpo) • StreamMessage • MapMessage • TextMessage • ObjectMessage • ObjectMessage • BytesMessage
  • 11. Passos para produzir • ConnectionFactory cria Connection • Connection cria Session • Session cria mensagem • Obtém Destination (queue ou topic) • Session cria MessageProducer para Destination • MessageProducer envia mensagem
  • 12. Passos para receber • ConnectionFactory cria Connection • Connection cria Session • Session cria mensagem • Obtém Destination (queue ou topic) • Session cria MessageConsumer para Destination • MessageConsumer recebe mensagem
  • 13. Opção para receber • Síncrona • Chame Connection.start() • MessageConsumer.receive() • Assíncrona • Crie MessageListener • Registre MessageListener com o MessageConsumer • Chame Connection.start()
  • 14. Esclarecimento • Troca de mensagens é assíncrona • A recepção propriamente dita de uma mensagem, após o envio assíncrono, pode ser • síncrona ou assíncrona (receive() ou via MessageListener)
  • 15. Portanto... • Point-to-Point • Cliente1 envia msg para queue • Cliente2 consome msg da queue • Publish/subscribe • Cliente1 publica msg em topic • Cliente2,3,... assinam topic • MOM entrega msg aos clientes
  • 16. Objetos administrados • Fábricas de conexão javax.jms.ConnectionFactory • Destinos (destination) javax.jms.Destination
  • 17. Subinterfaces de javax.jms.ConnectionFactory • javax.jms.QueueConnectionFactory • javax.jms.TopicConnectionFactory
  • 18. Cliente • Recurso JNDI de nome x é injetado em cf (código abaixo) • @Resource(mappedName=”x”) private static ConnectionFactory cf;
  • 19. Cliente • Destino ou fonte de mensagens (javax.jms.Destination) • @Resource(mappedName=”d”) private static Queue queue; • @Resource(mappedName=”f”) private static Topic topic;
  • 20. Criando conexão • Um ConnectionFactory permite criar uma conexão com o JMS provider • javax.jms.Connection (representa com JMS provider) • Connection c = cf.createConnection();
  • 21. Conexão (detalhe) • Conexão deve ser fechada Connection.close() • Fecha sessões, produtores e consumidores associados • Antes de consumir mensagens Connection.start()
  • 22. Sessão • Contexto (single-threaded) para produzir e consumir mensagens • Agrupa conjunto de envios e recepções de mensagens em transação • Uma sessão é criada a partir de uma conexão
  • 23. Criando uma Session • javax.jms.Session s; • s = c.createSession(false,Session.AUTO_ACKNOWLEDGE); • false (sessão não é executada no contexto de uma transação) • Session.AUTO_ACKNOWLEDGE (mensagem foi consumida, ou seja, receive() ou onMessage(Message) sem exceções)
  • 24. Usos de Session • Criar MessageProducer • Criar MessageConsumer • Criar mensagens (Message) • Criar browsers (Queue) Consultar msgs sem removê-las • Criar Queues e Topics temporários
  • 25. MessageProducer • Session.createProducer(Destination) • javax.jms.Destination (subinterfaces) • javax.jms.Queue • javax.jms.Topic
  • 26. MessageConsumer • Session.createConsumer(Destination) • javax.jms.Destination (subinterfaces) • javax.jms.Queue • javax.jms.Topic
  • 28. Com um consumidor... Síncrono Message consumidor.receive() Assíncrono consumidor.setMessageListener(listener)

Hinweis der Redaktion