JMS
Origem: Wikipédia, a enciclopédia livre.
Java Message Service, ou JMS, é uma API da linguagem Java para middleware orientado à mensagens. Através da API JMS duas ou mais aplicações podem se comunicar por mensagens.
Índice |
[editar] Arquitetura
A API JMS suporta dois modelos de troca de mensagens:
- ponto a ponto ou modelo de filas
- modelo publish/subscribe
[editar] Modelo ponto a ponto
No modelo ponto a ponto, ou por filas, um "produtor" (producer) envia mensagens para uma fila e um "consumidor" (consumer) as lê. Neste caso, o produtor conhece o destino da mensagem e a envia diretamente para a fila do consumidor. Este modelo é caracterizado pelo seguinte:
- apenas um consumidor irá ler a mensagem;
- não é necessário que o produtor esteja em execução no momento em que o consumiror lê a mensagem, assim como não é necessário que o consumidor esteja em execução no momento que o produtor envia a mensagem;
- quando lê uma mensagem com sucesso o consumidor envia um aviso (acknowledged) para o produtor.
[editar] Modelo publish/subscribe
Este modelo suporta a publicação de mensagens para um determinado tópico de mensagens (message topic). O(s) "assinante(s)" (subscriber) podem registrar interesse em receber ("em assinar") mensagens de um tópico. Neste modelo, nem o "publicador" (publisher) ou o "assinante" sabem um do outro. As características deste modelo são:
- múltiplos consumidores podem ler a mensagem;
- existe uma dependência temporal entre os publicadores e assinantes de um tópico. Um publicador deve criar uma "assinatura" (subscription) para que os assinantes possam receber mensagens. O assinante do tópico deve estar em execução continuamente para receber as mensagens.
[editar] Elementos da API JMS
[editar] Cliente JMS
Uma aplicação ou objeto Java que produz e consome mensagens. As mensagens são objetos que contém os dados que são transferidos entre os clientes JMS.
[editar] Conexão JMS
A partir do momento que uma factory é obtida, conexões para o provedor JMS podem ser criadas. Uma conexão representa a ligação entre a aplicação cliente e a aplicação servidora. Dependendo do tipo da conexão, ela permitirá que os clientes criem sessões para o envio e recebimento de mensagens de filas ou tópicos.
[editar] Factory de conexões JMS
É um objeto administrado que a aplicação cliente utiliza para a criação de conexões para o provedor JMS. Normalmente, os clientes obtém as factories através de interfaces portáveis, desta forma, mesmo se as configurações do provedor JMS mudarem, o código do cliente permanece inalterado. Os administradores mantém as configurações em objetos (objetos da classe factory), que são obtidos através de buscas (lookup) na JNDI. Dependendo do tipo da mensagem, o cliente obterá uma factory para tópico ou para fila.
[editar] Destino
É um objeto administrado que encapsula a identidade do destino das mensagens, que é onde as mensagens são enviadas e consumidas. Pode ser uma fila ou um tópico. O administrador JMS cria estes objetos, e os usuários os obtém através de buscas na JNDI. Da mesma forma que as factories de conexões, o administrador pode criar dois tipos de classe de destino, fila e tópico.
[editar] Consumidor
Um objeto criado através de uma sessão JMS. Ele recebe mensagens de um destino. O consumidor pode receber mensagens de maneira síncrona ou assíncrona de filas ou tópicos.
[editar] Produtor
Um objeto criado através de uma sessão JMS. Ele envia mensagens para um destino.
[editar] Mensagens
São objetos enviados entre consumidores e produtores de mensagens. Eles contém um outro objeto que encapsula os dados que serão trafegados pelas mensagens. Uma mensagem possui três partes principais:
- um cabeçalho, contém a rota das mensagens
- um conjunto de atributos opcionais
- o corpo da mensagem que pode conter cinco tipos de mensagens: texto, map, bytes, stream ou objetos
A interface de uma mensagem é extremamente flexível e permite várias formas de customização de conteúdo.
[editar] Provedor JMS
Representa uma interface para um software de middleware orientado à mensagens. Ele suporta a interface JMS que é especificada pela Sun Microsystems. Ele é basicamente um adaptador de um middleware.
[editar] Softwares que suportam JMS
Para que uma aplicação possa utilizar JMS, deve haver um provedor que possa gerenciar as sessões e filas. Existem opções comerciais e livres. Dentre as opções livres temos:
- ActiveMQ
- JBossMQ
- Joram
- MantaRay
- OpenJMS
Soluções comerciais incluem:
- BEA WebLogic Server da BEA Systems
- Tibco EMS da TIBCO Software
- FioranoMQ
- GigaSpaces da GigaSpaces Technologies
- iBus da Softwired
- IONA JMS da IONA Technologies
- IQManager da Sun Microsystems
- JMS+ da webMethods
- SonicMQ da Sonic Software
- WebSphere MQ da IBM