Your SlideShare is downloading. ×
0
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 destin...
Point-To-Point
• Produtor cria mensagem
• Mensagem entregue a um destino
  (neste caso um queue)

• Mensagem é colocada em...
Publish/Subscribe

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

• MOM entrega a mensagem a todos os
 consum...
Casos (queue)
• Vários consumidores podem enviar
  mensagens para várias filas (queues)
• Garantia
  Cada mensagem é entreg...
Casos (publish/
        subscribe)
• Mensagem tem como destino um
  tópico

• Vários consumidores podem estar
  registrado...
Componentes de JMS

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

• Clientes JMS: enviam/recebem msgs
• Mensagens: obj...
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
• ObjectMessa...
Passos para produzir
• ConnectionFactory cria Connection
• Connection cria Session
• Session cria mensagem
• Obtém Destina...
Passos para receber
• ConnectionFactory cria Connection
• Connection cria Session
• Session cria mensagem
• Obtém Destinat...
Opção para receber
• Síncrona
 • Chame Connection.start()
 • MessageConsumer.receive()
• Assíncrona
 • Crie MessageListene...
Esclarecimento

• Troca de mensagens é assíncrona
• A recepção propriamente dita de uma
  mensagem, após o envio assíncron...
Portanto...
• Point-to-Point
  • Cliente1 envia msg para queue
  • Cliente2 consome msg da queue
• Publish/subscribe
  • C...
Objetos administrados


• Fábricas de conexão
  javax.jms.ConnectionFactory
• Destinos (destination)
  javax.jms.Destinati...
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 Connect...
Cliente

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

• Um ConnectionFactory permite criar
  uma conexão com o JMS provider
• javax.jms.Connection
  (represent...
Conexão (detalhe)

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

• Contexto (single-threaded) para
  produzir e consumir mensagens
• Agrupa conjunto de envios e
  recepções de men...
Criando uma Session
• javax.jms.Session s;
• s = c.createSession(false,Session.AUTO_ACKNOWLEDGE);

• false (sessão não é e...
Usos de Session

• Criar MessageProducer
• Criar MessageConsumer
• Criar mensagens (Message)
• Criar browsers (Queue)
  Co...
MessageProducer


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


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



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

                Síncrono

Message consumidor.receive()

               Assíncrono
consumidor.setMess...
Upcoming SlideShare
Loading in...5
×

MDB

1,387

Published on

Visão geral de message-driven beans.

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,387
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
38
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide



















































































  • Transcript of "MDB"

    1. 1. MDB Message-Driven Beans
    2. 2. (As)síncrona • Java RMI (comunicação síncrona) • JMS (Java Message Service) (comunicação assíncrona)
    3. 3. Modelos de Comunicação Assíncrona • Point-to-Point (PTP) • Queue destination • Publish/Subscribe • Topic destination
    4. 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. 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. 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. 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. 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. 9. Mensagem • Cabeçalho (obrigatório) • Propriedades (opcional) • Corpo (opcional) • Contém a ser trocado (payload)
    10. 10. Tipos de mensagens • Message (mensagem sem corpo) • StreamMessage • MapMessage • TextMessage • ObjectMessage • ObjectMessage • BytesMessage
    11. 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. 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. 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. 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. 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. 16. Objetos administrados • Fábricas de conexão javax.jms.ConnectionFactory • Destinos (destination) javax.jms.Destination
    17. 17. Subinterfaces de javax.jms.ConnectionFactory • javax.jms.QueueConnectionFactory • javax.jms.TopicConnectionFactory
    18. 18. Cliente • Recurso JNDI de nome x é injetado em cf (código abaixo) • @Resource(mappedName=”x”) private static ConnectionFactory cf;
    19. 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. 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. 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. 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. 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. 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. 25. MessageProducer • Session.createProducer(Destination) • javax.jms.Destination (subinterfaces) • javax.jms.Queue • javax.jms.Topic
    26. 26. MessageConsumer • Session.createConsumer(Destination) • javax.jms.Destination (subinterfaces) • javax.jms.Queue • javax.jms.Topic
    27. 27. Com um produtor... produtor.send(Message)
    28. 28. Com um consumidor... Síncrono Message consumidor.receive() Assíncrono consumidor.setMessageListener(listener)
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×