O documento descreve os conceitos e componentes de JMS (Java Message Service), incluindo modelos de comunicação assíncrona (point-to-point e publish/subscribe), componentes como ConnectionFactory, Connection, Session, MessageProducer e MessageConsumer, e os passos para enviar e receber mensagens.
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)
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
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