Escolar Documentos
Profissional Documentos
Cultura Documentos
Aplicaes
Java
Utilizando
WebSphere
MQ
Otavio
Rodolfo
Piske
angusyoung@gmail.com
1.
Introduo
.......................................................................................................
3
2.
Preparao
do
Ambiente
.................................................................................
3
Requerimentos
....................................................................................................................................................
3
Download
e
Instalao
do
WebSphere
MQ
.............................................................................................
4
Instalao
de
um
Servidor
WebSphere
MQ
.............................................................................................
4
Instalao
do
Cliente
WebSphere
MQ
.......................................................................................................
5
3.
Introduo
ao
WebSphere
MQ
........................................................................
6
Preparando
um
Servidor
MQ
........................................................................................................................
6
Criao
das
Filas
.................................................................................................................................................
6
4.
Desenvolvimento
............................................................................................
7
Planejando
a
Soluo
........................................................................................................................................
7
Codificao
..........................................................................................................................................................
11
Conecta
no
servidor
........................................................................................................................................
11
Instncia
a
interface
com
o
MQ
................................................................................................................
11
Desconecta
do
Servidor
................................................................................................................................
12
Abre
uma
fila
para
escrita
...........................................................................................................................
12
Envia
dados
pela
interface
..........................................................................................................................
13
Abre
uma
fila
para
leitura
...........................................................................................................................
14
Recebe
Dados
Pela
Interface
......................................................................................................................
15
5.
Testes
............................................................................................................
16
Compilao
.........................................................................................................................................................
16
Execuo
..............................................................................................................................................................
17
6.
Referncia
.....................................................................................................
18
1. Introduo
2. Preparao
do
Ambiente
Requerimentos
Para
o
acompanhamento
das
atividades
propostas
nesse
artigo
recomenda-se
o
seguinte:
1
estao
de
trabalho
rodando
Windows,
Linux
ou
Solaris.
o Para
elaborao
deste
artigo
foram
utilizados
duas
estacoes
de
trabalho
rodando
Fedora
Linux
14,
desta
forma
os
detalhes
de
configurao
do
WebSphere
MQ
em
ambiente
Windows,
distribuies
Linux
que
no
sejam
da
famlia
do
Red
Hat
Linux
e
Solaris
Unix
no
constam
neste
artigo.
Os
detalhes
de
configurao
do
MQ
nestes
ambientes
podem
ser
encontrados
nos
documentos
de
referencia
disponibilizados
no
final
do
artigo.
Ambiente
de
desenvolvimento
Java
1.5
ou
superior.
Eclipse
Helios.
WebSphere
MQ
6.0.2.4.
Uma
verso
de
demonstrao
do
WebSphere
MQ
pode
ser
baixado
no
site
do
produto,
na
pgina
da
IBM1Referncia
.
Para
fazer
o
baixar
o
arquivo
ser
necessrio
criar
um
passaporte,
sem
qualquer
custo,
no
site
da
IBM.
Nota:
os
procedimentos
descritos
nas
prximas
nas
prximas
duas
sees
foram
executados
em
dois
computadores
diferentes.
perfeitamente
seguro
unific-los
caso
a
instalao
do
cliente
e
do
servidor
ocorra
na
mesma
mquina.
No
Linux
o
WebSphere
MQ
Server
disponibilizado
em
formato
RPM,
deste
modo
a
instalao
bastante
simples.
Antes
da
instalao
dos
RPMs
ser
necessrio
aceitar
a
licena.
Para
faze-
lo
basta
executar
o
script
mqlicense.sh.
Aps
a
execuo
desses
passos
ser
possvel
prosseguir
com
a
instalao
do
MQ.
Para
iniciar
a
instalao
execute
o
seguinte
comando:
rpm -ivh MQSeriesMan-6.0.0-0.i386.rpm MQSeriesServer6.0.0-0.i386.rpm MQSeriesRuntime-6.0.0-0.i386.rpm
Ao
terminar
a
instalao,
execute
o
update
para
a
verso
6.0.2.4:
Assim
como
o
servidor,
o
cliente
MQ
para
Linux
tambm
disponibilizado
em
formato
RPM.
Como
pr-requisito
para
instalao
do
cliente
ser
necessrio
aceitar
a
licena
atravs
da
execuo
do
comando
mqlicense.sh,
que
distribudo
junto
com
o
pacote
do
MQ.
3. Introduo
ao
WebSphere
MQ
O
WebSphere
MQ,
conforme
explicado
anteriormente,
um
middleware
orientado
a
mensagens.
Por
ser
orientado
a
mensagens,
isso
significa
que
a
troca
de
dados
entre
os
pares
em
uma
comunicao
MQ
se
d
de
forma
unitria.
Ou
seja,
no
existe
um
fluxo
constante
e
ilimitado
de
dados.
No
se
deixe
enganar
pela
simplicidade
do
conceito
troca
de
mensagens
entre
aplicaes.
O
WebSphere
MQ
se
baseia
em
uma
srie
de
conceitos
que
devem
ser
compreendidos
para
que
seja
possvel
utiliz-lo
adequadamente.
Dentre
esses
conceitos,
podemos
explicar
os
principais,
resumidamente,
da
seguinte
forma:
Gerente
de
Filas
(queue
manager):
gerncia
um
conjunto
de
filas.
Canal
(channel):
um
agrupamento
de
filas
dentro
de
um
mesmo
queue
manager.
Fila
(queue):
um
container
de
mensagens.
Serve
como
meio
de
transmisso
utilizado
pelo
MQ
para
que
as
mensagens
inseridas
em
uma
ponta
sejam
recebidas
em
outra.
Preparando um Servidor MQ
Apos
salvar
o
arquivo
rode
os
seguintes
comandos
para
criar
o
queue
manager,
inici-lo
e
configurar
as
filas:
crtmqmq q TUTO001
strmqm TUTO001
runmqsc < create-mq.mqsc
Uma
vez
que
esses
passos
tenham
sido
executados
com
sucesso,
um
gerente
de
filas
estar
ativo
e
ouvindo
na
porta
TCP
1414,
a
porta
padro,
utilizada
pelo
WebSphere
MQ.
4. Desenvolvimento
Planejando a Soluo
O
diagrama
de
sequncia
abaixo
detalha,
simplificadamente,
o
envio
de
uma
mensagem
via
MQ.
Aqui
temos
um
segundo
diagrama
de
sequncia
detalhando
os
passos
utilizados
pelo
servidor
para
receber
uma
mensagem.
Codificao
Conecta
no
servidor
protected MQInterface(String hostname, int port, String channel) {
// Seta o hostname do servidor MQ
MQEnvironment.hostname = hostname;
// Seta a porta do servidor MQ
MQEnvironment.port = port;
// Seta o canal padrao
MQEnvironment.channel = channel;
}
Em
nosso
exemplo
utilizamos
o
construtor
da
interface
MQ
para
configurar
alguns
parmetros
bsicos
de
conexo.
Instncia
a
interface
com
o
MQ
/*
* Cria uma nova instncia do objeto de acesso ao
* queue manager, passando o nome da fila como
* parametro
*/
queueManager = new MQQueueManager(DEFAULT_QM_NAME);
O
mtodo
connect
cria
uma
instncia
de
um
objeto
do
tipo
MQQueueManager.
Esse
objeto
utilizado
para
abstrair
a
manipulao
e
o
gerenciamento
dos
objetos
diretamente
relacionados
ao
queue
manager.
Por
exemplo,
acesso
s
filas,
commit
e/ou
rollback
de
transaes,
etc.
importante
notar
que
no
preciso
chamar
um
mtodo
de
conexo:
quando
o
objeto
MQQueueManager
instanciado
ele
se
conecta
no
queue
manager,
utilizando
os
parmetros
previamente
configurados
pela
MQEnvironment.
Desconecta do Servidor
A
desconexo
do
servidor
MQ
quase
to
simples
quanto
conexo
ao
mesmo:
uma
vez
que
o
objeto
validado,
verifica-se
o
estado
da
conexo
utilizando
o
mtodo
isConnected
e,
estando
conectado,
a
conexo
finalizada
atravs
do
mtodo
disconnect.
Dica:
evite
utilizar
a
varivel
membro
isConnected
pois
ela
est
marcada
como
depreciada
(deprecated).
Abre
uma
fila
para
escrita
protected MQQueue openQueueForOutput(String queueName) throws MQException {
/*
* Define as opes de acesso a fila:
* - MQOO_OUTPUT = abre a fila p/ incluso de mensagens (saida, host -> mq)
* - MQOO_FAIL_IF_QUIESCIENG = falha se o servidor estiver sendo desligado
*/
int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
}
O
primeiro
passo
antes
de
enviar
dados
por
uma
fila
MQ
requisitar
ao
queue
manager
acesso
a
fila.
Isso
feito
atravs
do
mtodo
accessQueue,
do
objeto
MQQueueManager.
Esse
mtodo
recebe
o
nome
da
fila
seguido
de
um
inteiro,
que
serve
como
mapa
de
bits
das
opes
de
abertura
da
fila.
closeQueue(queue);
Enviar
dados
pela
interface
MQ
consiste,
basicamente,
3
grupos
de
tarefas.
Elas
envolvem
preparar
os
recursos,
enviar
a
mensagem
e
tratar
os
erros
e
liberar
os
recursos
utilizados.
A
partir
do
cdigo
utilizado
como
exemplo
podemos
categorizar
as
linhas
de
cdigo
acima
da
seguinte
forma:
1. Preparao
dos
recursos
utilizados
na
transao:
mensagem
e
fila,
neste
exemplo:
a. Acesso
a
fila
para
escrita
de
dados,
conforme
detalhado
no
passo
anterior.
b. Preparao
dos
parmetros
de
envio
da
mensagem:
formato
e
tempo
de
vida.
importante
ressaltar
que
a
opo
format,
da
mensagem
diz
respeito
ao
formato
do
dado
sendo
enviado
e
no
ao
formato
da
transao.
Desta
forma,
no
importa
se
a
transao
em
texto
puro,
XML
ou
algum
formato
prprio
baseado
em
caracteres:
o
formato
do
dado
MQFMT_STRING.
Em
contrapartida,
existem
outras
opes
igualmente
adequadas
para
outros
tipos
de
protocolos.
Assim
como
no
envio
de
dados
atravs
do
MQ,
necessrio
abrir
a
fila
com
os
parmetros
apropriados
ao
recebimento
de
mensagens.
Assim
como
na
abertura
de
fila
para
envio,
atravs
de
uma
chamada
ao
mtodo
accessQueue,
que
nos
recebemos
um
objeto
MQQueue
apropriado
para
gravao
de
mensagens.
message.readStringOfCharLength(
message.getMessageLength());
}
catch (EOFException e) {
System.out.println(
"A leitura da mensagem terminou abruptamente");
}
finally {
closeQueue(queue);
queueManager.commit();
}
return ret;
A
obteno
das
mensagens
atravs
do
MQ
tambm
pode
ser
dividida
em
3
grupos
de
tarefas:
preparao
dos
recursos
utilizados
na
transao,
recebimento
e
tratamento
de
erros
e
efetivao
transao.
Usando
o
cdigo
mostrado
acima,
possvel
categorizar
as
instrues
da
seguinte
forma:
5. Testes
Verifique
a
seo
Referencia
para
fazer
download
do
cdigo-fonte
utilizado
como
exemplo
neste
artigo.
Compilao
O
cdigo-fonte
pode
ser
compilado
utilizando
o
maven
verso
3.0
ou
superior.
Para
isto
basta
acessar
o
diretrio
do
projeto
e
executar
os
seguintes
passos:
Compilar
a
biblioteca
comum:
cd mqbase && mvn install && cd ..
Compilar
o
cliente:
cd mqclient && mvn package
Compilar
o
servidor:
cd mqserver && mvn package
O
arquivo
gerado
ao
final
da
compilao
ficar
no
diretrio
target.
Execuo
Para
rodar
as
aplicaes,
inicie
primeiramente
o
servidor
e,
obtendo
sucesso,
execute
o
cliente.
Os
comandos
a
serem
executados
so:
Lembre-se
de
substituir
<hostname>
pelo
nome
do
host
ou
endereo
IP
utilizado
pelo
seu
servidor
MQ.
Uma
vez
que
o
cliente
tenha
sido
executado
com
sucesso,
o
servidor
dever
mostrar
a
seguinte
mensagem:
Hello
World.
As
imagens
abaixo
mostram
o
envio
e
o
recebimento
das
mensagens
atravs
dos
exemplos.
Cliente:
Servidor:
6. Referncia