UFG - Instituto de Informática
Especialização em Desenvolvimento de
Aplicações Web com Interfaces Ricas
EJB 3.0
Prof.: Fabrízzio A A M N Soares
[email protected]
Aula 11 – Serviços de Envio de Mensagens
Message Oriented Middleware

Middleware orientado a mensagem (MOM) é
um software ou hardware de infra-estrutura
focada em enviar e receber mensagens entre
sistemas distribuídos.
Message Oriented Middleware


MOM permite que os módulos do aplicativo
para ser distribuído através de plataformas
heterogêneas
Reduz a complexidade do desenvolvimento de
aplicações que abrangem vários sistemas
operacionais e protocolos de rede, isolando o
desenvolvedor do aplicativo a partir de detalhes
do sistema operacional e interfaces de rede.
Message Oriented Middleware


MOM é um software que reside em ambas as
porções da arquitetura cliente/servidor e
normalmente suporta chamadas assíncronas
entre as aplicações cliente e servidor.
MOM
reduz
a
participação
dos
desenvolvedores de aplicativos com a
complexidade da natureza mestre/escravo do
cliente/servidor mecanismo.
Origem



O caso de um grande banco fornece um bom
exemplo de como middleware surgiu como
uma exigência do negócio:
Um banco tinha guardado todos os detalhes do
seu cliente em seu mainframe de grande porte
desde 1960.
Este mainframe permaneceu em uso pesado e
sofreu diversos melhoramentos.
Origem


Apesar de inovador em sua época, a utilidade
do mainframe para o pessoal do banco
diminuiu
O banco apresentou novas aplicações
separadas com base em computadores
pessoais (PCs), permitindo que o pessoal do
banco oferecer aos clientes novos serviços que
o mainframe não poderia suportar.
Origem

Uma situação ideal seria permitir que o
aplicativo baseado em PC com link para o
aplicativo de mainframe mais velhos e permitir
que o mainframe e os PCs para compartilhar
uns dos outros dados.
Origem

Acessando dados do mainframe oferece duas
vantagens:
1.Novas Aplicações de front-end PC podem substituir
os antigos terminais de mainframe pouco amigável
ao usuário.
2.Sistemas baseados em PC podem utilizar os dados
do mainframe em novas formas - antes
impraticáveis devido às limitações do software do
mainframe
Origem

Até o final de 1980 integradores de sistema
tinha nenhuma maneira fácil de ligar estas
aplicações diferentes juntos.
Origem

Desenvolvedores enfrentou vários desafios:
1. Os desenvolvedores teriam que construir
“adaptadores” de um software separado em ambos
os sistemas de tradução de dados de aplicativos de
código em um formato que o sistema de destino
pode entender (e vice-versa).
Origem
2. A velocidade de processamento de cada sistema
obrigaria o outro sistema.
Por exemplo, se o mainframe correu lentamente, o
aplicativo baseado em PC teria que esperar até
que o mainframe apanhados, atrasando a
aplicação de PC.
Por outro
transferida
de custo
mainframe
preso.
lado, a transformação que tinha sido
para servidores distribuídos por razões
seria executado de forma lenta e
teria de esperar até que o servidor
Origem
3. Programadores de comunicação seria necessário
instalar um sistema de gateway de rede para
formar uma ponte entre a rede do mainframe e da
rede de PC, se os diferentes sistemas utilizados
diferentes protocolos de rede.
O gateway iria traduzir os pacotes de rede do
sistema de origem e de transmiti-las ao sistema de
destino usando o protocolo do sistema de destino.
Origem



Tais questões feita a integração entre aplicações
difíceis.
Grande parte dessa integração também necessária
reengenharia cada vez duas aplicações em
plataformas diferentes necessário que reúna, já
que cada situação diferente, em certa medida.
Ao dedicar esforço para que reúna os aplicativos
em diferentes sistemas, departamentos de TI e
passou a gastar uma quantia significativamente
maior do que o gasto no desenvolvimento inicial,
por sub-sistema.
Java Message System



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.
A JMS API é uma
Middleware (MOM)
Message
Oriented
Arquitetura

A API JMS suporta dois modelos de troca de
mensagens:

Ponto a ponto ou modelo de filas

Modelo publish/subscribe
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.
Modelo Ponto a Ponto

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 consumidor 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.
Modelo Ponto a Ponto
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.
Modelo Publish/Subscribe

As características deste modelo são:




Múltiplos consumidores podem ler a mensagem;
Existe uma dependência temporal entre
publicadores e assinantes de um tópico;
os
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.
Modelo Publish/Subscribe
Elementos da API JMS

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.
Elementos da API JMS

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.
Elementos da API JMS

Fábrica 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.
Elementos da API JMS

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.
Elementos da API JMS

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.
Elementos da API JMS

Produtor

Um objeto criado através de uma sessão JMS.

Ele envia mensagens para um destino.
Elementos da API JMS

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:
1.um cabeçalho, contém a rota das mensagens
2.um conjunto de atributos opcionais
3.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.
Elementos da API JMS

Provedor JMS



Representa uma interface para um software de middleware
orientado à mensagens.
Ele suporta a interface JMS que é especificada pela Sun
Microsystems/Oracle.
Ele é basicamente um adaptador de um middleware.
Softwares que suportam JMS

Livres

ActiveMQ

JbossMQ

Joram

MantaRay

OpenJMS

RabbitMQ

Glassfissh
Softwares que suportam JMS

Comerciais

BEA WebLogic Server da BEA Systems

Tibco EMS da TIBCO Software

FioranoMQ

GigaSpaces da GigaSpaces Technologies

iBus da Softwired

IONA JMS da IONA Technologies

SeeBeyond ICAN Suite da Sun Microsystems

IQManager da Sun Microsystems

JMS+ da webMethods

SonicMQ da Sonic Software

WebSphere MQ da IBM

webMethods Broker JMS da webMethods
Tecnologias de Mensagens que não
suportam JMS

Advanced Message Queuing Protocol (AMQP)


Amazon Simple Queue Service


Protocolo de filas de mensagens padronizadas com
implementações independentes múltiplas.
Serviços de mensagens comodotizados providos
pela Amacon.com com uma taxa por uso. Permite
ao usuário alugar acesso para messaging sem ter e
manter seu próprio servidor.
Microsoft Message Queuing

Tecnologia similar, implementada para .NET
Framework.
Download

Mensagens